diff --git a/.gitignore b/.gitignore index b8b02b54..6332fc87 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ target *.pem .debug -.env* \ No newline at end of file +.env* + +.gitmodules \ No newline at end of file diff --git a/.vscode/spellright.dict b/.vscode/spellright.dict index d210eacf..919ff8d5 100644 --- a/.vscode/spellright.dict +++ b/.vscode/spellright.dict @@ -1,4 +1,5 @@ abis Fastconfirmation +preimage testnet unstaking \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 5647b54f..d19e36e3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,9 +136,9 @@ dependencies = [ [[package]] name = "alloy-core" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca1380cc3c81b83d5234865779494970c83b5893b423c59cdd68c3cd1ed0b671" +checksum = "d23ccdb29eedfa1d83f32efbc958d0944e6928e252295dd5eafc516ed57f3a0a" dependencies = [ "alloy-dyn-abi", "alloy-json-abi", @@ -149,9 +149,9 @@ dependencies = [ [[package]] name = "alloy-dyn-abi" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7078bef2bc353c1d1a97b44981d0186198be320038fbfbb0b37d1dd822a555d3" +checksum = "ada55b5ab26624766bb8c65f72516dee93eaf28d5d87fc18ff4324cd8c2a948d" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -247,9 +247,9 @@ dependencies = [ [[package]] name = "alloy-json-abi" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec80745c33797e8baf547a8cfeb850e60d837fe9b9e67b3f579c1fcd26f527e9" +checksum = "df4054f177d1600f17e2bc152f6a927592641b19861e6005cc51bdf7d4fa27a6" dependencies = [ "alloy-primitives", "alloy-sol-type-parser", @@ -329,9 +329,9 @@ dependencies = [ [[package]] name = "alloy-primitives" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eacedba97e65cdc7ab592f2b22ef5d3ab8d60b2056bc3a6e6363577e8270ec6f" +checksum = "7283185baefbe66136649dc316c9dcc6f0e9f1d635ae19783615919f83bc298a" dependencies = [ "alloy-rlp", "bytes", @@ -587,9 +587,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3637022e781bc73a9e300689cd91105a0e6be00391dd4e2110a71cc7e9f20a94" +checksum = "f99b007e002f1082b28827cc47d9c72562d412a98c06f29aa438118ff3036c43" dependencies = [ "alloy-sol-macro-expander", "alloy-sol-macro-input", @@ -601,9 +601,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-expander" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b9bd22d0bba90e40f40c625c33d39afb7d62b22192476a2ce1dcf8409dce880" +checksum = "6c0a9cb9b1afbcd3325e0fff9fdf98e6d095643fae9e5584e80597f0b79b6d6e" dependencies = [ "alloy-json-abi", "alloy-sol-macro-input", @@ -620,9 +620,9 @@ dependencies = [ [[package]] name = "alloy-sol-macro-input" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ae4646e8123ec2fd10f9c22e361ffe4365c42811431829c2eabae528546bcc" +checksum = "530c4863e707b95f99b37792cdfa94d30004ec552aed41e200a1d9264d44e669" dependencies = [ "alloy-json-abi", "const-hex", @@ -638,9 +638,9 @@ dependencies = [ [[package]] name = "alloy-sol-type-parser" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488a747fdcefeec5c1ed5aa9e08becd775106777fdeae2a35730729fc8a95910" +checksum = "74b210dd863afa9da93c488601a1f23bee1e3ce47e15519582320c205645a7a0" dependencies = [ "serde", "winnow", @@ -648,9 +648,9 @@ dependencies = [ [[package]] name = "alloy-sol-types" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "767957235807b021126dca1598ac3ef477007eace07961607dc5f490550909c7" +checksum = "4f5ff802859e2797d022dc812b5b4ee40d829e0fb446c269a87826c7f0021976" dependencies = [ "alloy-json-abi", "alloy-primitives", @@ -1601,9 +1601,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.16" +version = "1.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +checksum = "1fcb57c740ae1daf453ae85f16e37396f672b039e00d9d866e07ddb24e328e3a" dependencies = [ "jobserver", "libc", @@ -4293,17 +4293,38 @@ dependencies = [ name = "pcp-protocol-client" version = "0.0.1" dependencies = [ + "alloy", + "alloy-contract", + "alloy-network", + "alloy-primitives", + "alloy-provider", + "alloy-rpc-types", + "alloy-signer", + "alloy-sol-types", + "alloy-transport", + "alloy-transport-ws", "anyhow", + "async-stream", + "async-trait", "clap", - "dotenv", + "ffs-environment", + "futures", "hex", + "pcp-config", "pcp-protocol-client-core-eth", "pcp-protocol-client-core-util", "pcp-types", + "secure-signer", + "secure-signer-eth", "secure-signer-loader", "serde", + "serde_json", "sha3", + "thiserror 1.0.69", "tokio", + "tokio-stream", + "tracing", + "tracing-subscriber", ] [[package]] @@ -5701,9 +5722,9 @@ dependencies = [ [[package]] name = "syn-solidity" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d975606bae72d8aad5b07d9342465e123a2cccf53a5a735aedf81ca92a709ecb" +checksum = "36dbbf0d465ab9fdfea3093e755ae8839bdc1263dbe18d35064d02d6060f949e" dependencies = [ "paste", "proc-macro2", @@ -5751,9 +5772,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tempfile" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488960f40a3fd53d72c2a29a58722561dee8afdd175bd88e3db4677d7b2ba600" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ "fastrand", "getrandom 0.3.2", @@ -6944,18 +6965,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.3" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3051792fbdc2e1e143244dc28c60f73d8470e93f3f9cbd0ead44da5ed802722" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.14+zstd.1.5.7" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fb060d4926e4ac3a3ad15d864e99ceb5f343c6b34f5bd6d81ae6ed417311be5" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 91cabcbd..a67744e1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -108,6 +108,7 @@ hex = { version = "0.4.3", default-features = false, features = [ "alloc", "serde", ] } +sha3 = "0.10" zip = { version = "2.4.2", features = ["flate2"] } walkdir = "2.3.2" tempfile = "3.5.0" @@ -172,6 +173,10 @@ secure-signer-eth = { path = "util/signing/eth" } ffs-environment = { path = "util/environment" } commander = { path = "util/commander" } +# Movement dependencies +dot-movement = { git = "https://github.com/movementlabsxyz/movement.git", branch = "main" } +movement-types = { git = "https://github.com/movementlabsxyz/movement.git", branch = "main" } + [workspace.lints.clippy] debug_assert_with_mut_call = "deny" inefficient_to_string = "deny" diff --git a/protocol/mcr/cli/client/abis/MCR.json b/protocol/mcr/cli/client/abis/MCR.json new file mode 100644 index 00000000..c9eced46 --- /dev/null +++ b/protocol/mcr/cli/client/abis/MCR.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"COMMITMENT_ADMIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TRUSTED_ATTESTER","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":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"acceptedBlocks","inputs":[{"name":"blockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptedBlocksVersion","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchGrantCommitmentAdmin","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchGrantTrustedAttester","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"blockHeightEpochAssignments","inputs":[{"name":"blockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitmentStakes","inputs":[{"name":"blockHeight","type":"uint256","internalType":"uint256"},{"name":"commitement","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitments","inputs":[{"name":"blockHeight","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"computeAllCurrentEpochStake","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllStakeAtEpoch","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllTotalStakeForCurrentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllTotalStakeForEpoch","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"createBlockCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct MCRStorage.BlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"pure"},{"type":"function","name":"forceLatestCommitment","inputs":[{"name":"blockCommitment","type":"tuple","internalType":"struct MCRStorage.BlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAcceptedCommitmentAtBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct MCRStorage.BlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getAttesters","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getCurrentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentEpochStake","inputs":[{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochByBlockTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxTolerableBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStakeAtEpoch","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForCurrentEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForEpoch","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getValidatorCommitmentAtBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct MCRStorage.BlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"grantCommitmentAdmin","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantTrustedAttester","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_stakingContract","type":"address","internalType":"contract IMovementStaking"},{"name":"_lastAcceptedBlockHeight","type":"uint256","internalType":"uint256"},{"name":"_leadingBlockTolerance","type":"uint256","internalType":"uint256"},{"name":"_epochDuration","type":"uint256","internalType":"uint256"},{"name":"_custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"lastAcceptedBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"leadingBlockTolerance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openAttestationEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAcceptedCommitmentAtBlockHeight","inputs":[{"name":"blockCommitment","type":"tuple","internalType":"struct MCRStorage.BlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setLastAcceptedBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOpenAttestationEnabled","inputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakingContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMovementStaking"}],"stateMutability":"view"},{"type":"function","name":"submitBatchBlockCommitment","inputs":[{"name":"blockCommitments","type":"tuple[]","internalType":"struct MCRStorage.BlockCommitment[]","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitBlockCommitment","inputs":[{"name":"blockCommitment","type":"tuple","internalType":"struct MCRStorage.BlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"versionedAcceptedBlocks","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"blockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"BlockAccepted","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"height","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"BlockCommitmentSubmitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"attesterStake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AttesterAlreadyCommitted","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnacceptableBlockCommitment","inputs":[]}],"bytecode":{"object":"0x60a0604052306080523480156012575f80fd5b5060805161292f6100395f395f81816119cc015281816119f50152611b38015261292f5ff3fe6080604052600436106102d9575f3560e01c806381df174611610189578063d547741f116100d8578063ee96da0511610092578063efe97d051161006d578063efe97d05146109ee578063f34d002a14610a02578063f89fe60b14610a21578063fc2788ad14610a40575f80fd5b8063ee96da0514610953578063ee99205c1461099f578063ef9ae15c146109d5575f80fd5b8063d547741f14610808578063e1b2b22214610827578063e1ffa44c14610846578063e8124097146108b5578063e90d4c06146108fa578063ee377d901461093f575f80fd5b8063ad3cb1cc11610143578063bc90afbb1161011e578063bc90afbb1461078c578063c6e1b9db146107ab578063cf6772ad146107ca578063d2526fef146107e9575f80fd5b8063ad3cb1cc1461071c578063b274a93514610759578063b97dd9e214610778575f80fd5b806381df17461461067957806391d148541461069857806392a2ebf3146106b7578063949d7c2a146106cb578063a217fddf146106ea578063a3df415f146106fd575f80fd5b80634ed7e4351161024557806360fea5dd116101ff578063747e7295116101da578063747e72951461061c57806374e8e5641461063157806380e460f0146106455780638129fc1c14610665575f80fd5b806360fea5dd146105c95780636542384f146105e85780636b588ac714610607575f80fd5b80634ed7e435146105235780634f1ef2861461054457806352d1902d1461055757806353cd9e3c1461056b5780635a912c831461058a5780635db916ab146105a9575f80fd5b80631faea1ed116102965780631faea1ed1461045d57806320e0e4451461047c578063248a9ca3146104a75780632f2ff15d146104c657806336568abe146104e55780634b47d95514610504575f80fd5b806301ffc9a7146102dd57806308c7050f146103115780630a0b81cc146103325780631c4e4e27146103d15780631cfa2516146104265780631dfcce8c14610449575b5f80fd5b3480156102e8575f80fd5b506102fc6102f736600461219e565b610a76565b60405190151581526020015b60405180910390f35b34801561031c575f80fd5b5061033061032b36600461225f565b610aac565b005b34801561033d575f80fd5b506103af61034c36600461228d565b60408051606080820183525f8083526020808401829052928401819052948552600482528285206001600160a01b039490941685529281529281902081519283018252805483526001810154938301939093526002909201549181019190915290565b6040805182518152602080840151908201529181015190820152606001610308565b3480156103dc575f80fd5b5061040b6103eb3660046122bb565b60066020525f908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610308565b348015610431575f80fd5b5061043b60015481565b604051908152602001610308565b348015610454575f80fd5b5061043b610bbc565b348015610468575f80fd5b5061043b6104773660046122d2565b610bcd565b348015610487575f80fd5b5061043b6104963660046122bb565b60036020525f908152604090205481565b3480156104b2575f80fd5b5061043b6104c13660046122bb565b610c58565b3480156104d1575f80fd5b506103306104e036600461228d565b610c78565b3480156104f0575f80fd5b506103306104ff36600461228d565b610c9a565b34801561050f575f80fd5b5061033061051e3660046123a6565b610cd2565b34801561052e575f80fd5b50610537610d3f565b6040516103089190612422565b610330610552366004612434565b610dab565b348015610562575f80fd5b5061043b610dc6565b348015610576575f80fd5b5061033061058536600461225f565b610de1565b348015610595575f80fd5b506103306105a43660046122bb565b610e9f565b3480156105b4575f80fd5b5061043b5f805160206128da83398151915281565b3480156105d4575f80fd5b5061043b6105e33660046124d9565b610f2d565b3480156105f3575f80fd5b5061043b6106023660046122bb565b610f3f565b348015610612575f80fd5b5061043b60025481565b348015610627575f80fd5b5061043b60095481565b34801561063c575f80fd5b5061043b610ff8565b348015610650575f80fd5b5061043b5f8051602061287a83398151915281565b348015610670575f80fd5b50610330611009565b348015610684575f80fd5b506103306106933660046124d9565b611113565b3480156106a3575f80fd5b506102fc6106b236600461228d565b611141565b3480156106c2575f80fd5b50610330611177565b3480156106d6575f80fd5b506103306106e53660046124d9565b61122c565b3480156106f5575f80fd5b5061043b5f81565b348015610708575f80fd5b506103306107173660046124f4565b6112ea565b348015610727575f80fd5b5061074c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103089190612589565b348015610764575f80fd5b5061043b6107733660046124d9565b611482565b348015610783575f80fd5b5061043b611494565b348015610797575f80fd5b5061043b6107a636600461259b565b6114ff565b3480156107b6575f80fd5b5061043b6107c536600461228d565b611512565b3480156107d5575f80fd5b506103306107e43660046123a6565b61158b565b3480156107f4575f80fd5b506103306108033660046125c7565b6115d8565b348015610813575f80fd5b5061033061082236600461228d565b611603565b348015610832575f80fd5b506103306108413660046125e6565b61161f565b348015610851575f80fd5b506103af6108603660046122bb565b60408051606080820183525f8083526020808401829052928401819052600954815260088352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b3480156108c0575f80fd5b5061040b6108cf366004612680565b600860209081525f928352604080842090915290825290208054600182015460029092015490919083565b348015610905575f80fd5b5061040b61091436600461228d565b600460209081525f928352604080842090915290825290208054600182015460029092015490919083565b34801561094a575f80fd5b5061043b6116c4565b34801561095e575f80fd5b506103af61096d3660046126a0565b60408051606080820183525f808352602080840182905292840152825190810183529485528401929092529082015290565b3480156109aa575f80fd5b505f546109bd906001600160a01b031681565b6040516001600160a01b039091168152602001610308565b3480156109e0575f80fd5b506007546102fc9060ff1681565b3480156109f9575f80fd5b5061043b6116f4565b348015610a0d575f80fd5b5061043b610a1c36600461228d565b611724565b348015610a2c575f80fd5b50610330610a3b36600461225f565b6117df565b348015610a4b575f80fd5b5061043b610a5a366004612680565b600560209081525f928352604080842090915290825290205481565b5f6001600160e01b03198216637965db0b60e01b1480610aa657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610aeb6040518060400160405280602081526020017f666f7263654c6174657374436f6d6d69746d656e742063616c6c65642062793a81525033611858565b610b025f8051602061287a83398151915233611141565b610b6c5760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b600160095f828254610b7e91906126dd565b90915550506009545f908152600860209081526040808320845184528252918290208351808255918401516001820155919092015160029182015555565b5f610bc8610602611494565b905090565b5f80546040516311b2104b60e31b8152306004820152602481018690526001600160a01b038581166044830152848116606483015290911690638d90825890608401602060405180830381865afa158015610c2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4e91906126f0565b90505b9392505050565b5f9081525f805160206128ba833981519152602052604090206001015490565b610c8182610c58565b610c8a8161189d565b610c9483836118a7565b50505050565b6001600160a01b0381163314610cc35760405163334bd91960e11b815260040160405180910390fd5b610ccd8282611948565b505050565b610cdc5f33611141565b610cf85760405162461bcd60e51b8152600401610b6390612707565b5f5b8151811015610d3b57610d335f8051602061287a833981519152838381518110610d2657610d26612749565b6020026020010151610c78565b600101610cfa565b5050565b5f54604051632924b73b60e01b81523060048201526060916001600160a01b031690632924b73b906024015f60405180830381865afa158015610d84573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bc8919081019061275d565b610db36119c1565b610dbc82611a67565b610d3b8282611a71565b5f610dcf611b2d565b505f8051602061289a83398151915290565b610df85f8051602061287a83398151915233611141565b610e6a5760405162461bcd60e51b815260206004820152603f60248201527f5345545f4c4153545f41434345505445445f434f4d4d49544d454e545f41545f60448201527f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f4f4e4c59006064820152608401610b63565b6009545f9081526008602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b610eb65f8051602061287a83398151915233611141565b610f285760405162461bcd60e51b815260206004820152603760248201527f5345545f4c4153545f41434345505445445f424c4f434b5f4845494748545f4960448201527f535f434f4d4d49544d454e545f41444d494e5f4f4e4c590000000000000000006064820152608401610b63565b600255565b5f610aa6610f39611494565b83611724565b5f8054604051636ae501ef60e11b815230600482015282916001600160a01b03169063d5ca03de906024015f60405180830381865afa158015610f84573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fab919081019061275d565b90505f805b8251811015610ff057610fdc85848381518110610fcf57610fcf612749565b6020026020010151611512565b610fe690836126dd565b9150600101610fb0565b509392505050565b5f600154600254610bc891906126dd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561104d5750825b90505f826001600160401b031660011480156110685750303b155b905081158015611076575080155b156110945760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110be57845460ff60401b1916600160401b1785555b6110c6611b76565b831561110c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f8051602061287a83398151915261112a8161189d565b610d3b5f805160206128da83398151915283610c78565b5f9182525f805160206128ba833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6111815f33611141565b6111db5760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b6064820152608401610b63565b5f8054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561121a575f80fd5b505af1158015610c94573d5f803e3d5ffd5b61126b6040518060400160405280601f81526020017f6772616e74436f6d6d69746d656e7441646d696e2063616c6c65642062793a0081525033611858565b6112755f33611141565b6112915760405162461bcd60e51b8152600401610b6390612707565b6112a85f8051602061287a83398151915282610c78565b6112e76040518060400160405280602081526020017f436f6d6d69746d656e7441646d696e20726f6c65206772616e74656420746f3a81525082611858565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561132e5750825b90505f826001600160401b031660011480156113495750303b155b905081158015611357575080155b156113755760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561139f57845460ff60401b1916600160401b1785555b6113a7611b82565b5f80546001600160a01b0319166001600160a01b038c16908117909155600189905560028a9055604051631a6e609f60e31b815263d37304f8906113f1908a908a906004016127ec565b5f604051808303815f87803b158015611408575f80fd5b505af115801561141a573d5f803e3d5ffd5b505050506114273361122c565b61143033611113565b831561147657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f610aa661148e611494565b83611512565b5f8054604051634d3223a560e01b81523060048201526001600160a01b0390911690634d3223a5906024015b602060405180830381865afa1580156114db573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc891906126f0565b5f610c5161150b611494565b8484610bcd565b5f8054604051635cdf315560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690635cdf315590606401602060405180830381865afa158015611567573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5191906126f0565b5f8051602061287a8339815191526115a28161189d565b5f5b8251811015610ccd576115d05f805160206128da833981519152848381518110610d2657610d26612749565b6001016115a4565b5f8051602061287a8339815191526115ef8161189d565b506007805460ff1916911515919091179055565b61160c82610c58565b6116158161189d565b610c948383611948565b60075460ff168061164257506116425f805160206128da83398151915233611141565b61168e5760405162461bcd60e51b815260206004820152601d60248201527f554e415554484f52495a45445f424c4f434b5f434f4d4d49544d454e540000006044820152606401610b63565b5f5b8151811015610d3b576116bc338383815181106116af576116af612749565b6020026020010151611b94565b600101611690565b5f8054604051631868e3ff60e31b81523060048201526001600160a01b039091169063c3471ff8906024016114c0565b5f805460405163010913cb60e71b81523060048201526001600160a01b0390911690638489e580906024016114c0565b5f8054604051636ae501ef60e11b815230600482015282916001600160a01b03169063d5ca03de906024015f60405180830381865afa158015611769573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611790919081019061275d565b90505f805b82518110156117d6576117c2868483815181106117b4576117b4612749565b602002602001015187610bcd565b6117cc90836126dd565b9150600101611795565b50949350505050565b60075460ff168061180257506118025f805160206128da83398151915233611141565b61184e5760405162461bcd60e51b815260206004820152601d60248201527f554e415554484f52495a45445f424c4f434b5f434f4d4d49544d454e540000006044820152606401610b63565b6112e73382611b94565b610d3b828260405160240161186e929190612804565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b179052611d14565b6112e78133611d1d565b5f5f805160206128ba8339815191526118c08484611141565b61193f575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556118f53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610aa6565b5f915050610aa6565b5f5f805160206128ba8339815191526119618484611141565b1561193f575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610aa6565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611a4757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611a3b5f8051602061289a833981519152546001600160a01b031690565b6001600160a01b031614155b15611a655760405163703e46dd60e11b815260040160405180910390fd5b565b5f610d3b8161189d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611acb575060408051601f3d908101601f19168201909252611ac8918101906126f0565b60015b611af357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b63565b5f8051602061289a8339815191528114611b2357604051632a87526960e21b815260048101829052602401610b63565b610ccd8383611d56565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a655760405163703e46dd60e11b815260040160405180910390fd5b611b7e611dab565b611a655b611b8a611dab565b6112e75f336118a7565b80515f9081526004602090815260408083206001600160a01b038616845290915290205415611bd657604051630ae09ad960e41b815260040160405180910390fd5b8051600154600254611be891906126dd565b1015611c0757604051630ae09ad960e41b815260040160405180910390fd5b80515f908152600360205260408120549003611c3657611c256116c4565b81515f908152600360205260409020555b80515f9081526004602090815260408083206001600160a01b0386168452825280832084518155918401516001830155830151600290910155611c7883610f2d565b82515f908152600560209081526040808320828701518452909152812080549293508392909190611caa9084906126dd565b9091555050604080830151602080850151835190815290810184905290917f4c9b7866113ce81c9ece48d2a0f4bb9d89d87f997a851cf3c448ee02f54559fd910160405180910390a25b611d0b6002546001611d0691906126dd565b611df4565b611cf457505050565b6112e781611f02565b611d278282611141565b610d3b5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b63565b611d5f82611f22565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611da357610ccd8282611f85565b610d3b611ff7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611a6557604051631afcd79f60e31b815260040160405180910390fd5b5f818152600360205260408120545b80611e0c611494565b1015611e1f57611e1a612016565b611e03565b5f6003611e2b83610f3f565b611e3690600261282d565b611e409190612844565b90505f611e4b610d3f565b90505f5b8151811015611ef7575f828281518110611e6b57611e6b612749565b6020908102919091018101515f8981526004835260408082206001600160a01b038416835284528082208151606081018352815480825260018301548288019081526002909301548285015284526005865282842091518452945290205490925085811115611eec57611edd82612055565b50600198975050505050505050565b505050600101611e4f565b505f95945050505050565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b806001600160a01b03163b5f03611f5757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b63565b5f8051602061289a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051611fa19190612863565b5f60405180830381855af49150503d805f8114611fd9576040519150601f19603f3d011682016040523d82523d5f602084013e611fde565b606091505b5091509150611fee858383612119565b95945050505050565b3415611a655760405163b398979f60e01b815260040160405180910390fd5b5f805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b15801561121a575f80fd5b5f61205e611494565b82515f9081526003602052604090205490915081146120905760405163071cab8b60e21b815260040160405180910390fd5b6009545f908152600860209081526040808320855184528252918290208451808255858301516001830181905586850151600293840181905592829055845190815292830152917f5b0d1f14085ff88796df21c2944d34c115838925a7bee30850fcacaaf902a379910160405180910390a28061210b6116c4565b1115610d3b57610d3b612016565b60608261212e5761212982612175565b610c51565b815115801561214557506001600160a01b0384163b155b1561216e57604051639996b31560e01b81526001600160a01b0385166004820152602401610b63565b5080610c51565b8051156121855780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156121ae575f80fd5b81356001600160e01b031981168114610c51575f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612201576122016121c5565b604052919050565b5f60608284031215612219575f80fd5b604051606081016001600160401b038111828210171561223b5761223b6121c5565b60409081528335825260208085013590830152928301359281019290925250919050565b5f6060828403121561226f575f80fd5b610c518383612209565b6001600160a01b03811681146112e7575f80fd5b5f806040838503121561229e575f80fd5b8235915060208301356122b081612279565b809150509250929050565b5f602082840312156122cb575f80fd5b5035919050565b5f805f606084860312156122e4575f80fd5b8335925060208401356122f681612279565b9150604084013561230681612279565b809150509250925092565b5f6001600160401b03821115612329576123296121c5565b5060051b60200190565b5f82601f830112612342575f80fd5b813561235561235082612311565b6121d9565b8082825260208201915060208360051b860101925085831115612376575f80fd5b602085015b8381101561239c57803561238e81612279565b83526020928301920161237b565b5095945050505050565b5f602082840312156123b6575f80fd5b81356001600160401b038111156123cb575f80fd5b6123d784828501612333565b949350505050565b5f8151808452602084019350602083015f5b828110156124185781516001600160a01b03168652602095860195909101906001016123f1565b5093949350505050565b602081525f610c5160208301846123df565b5f8060408385031215612445575f80fd5b823561245081612279565b915060208301356001600160401b0381111561246a575f80fd5b8301601f8101851361247a575f80fd5b80356001600160401b03811115612493576124936121c5565b6124a6601f8201601f19166020016121d9565b8181528660208385010111156124ba575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156124e9575f80fd5b8135610c5181612279565b5f805f805f60a08688031215612508575f80fd5b853561251381612279565b945060208601359350604086013592506060860135915060808601356001600160401b03811115612542575f80fd5b61254e88828901612333565b9150509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c51602083018461255b565b5f80604083850312156125ac575f80fd5b82356125b781612279565b915060208301356122b081612279565b5f602082840312156125d7575f80fd5b81358015158114610c51575f80fd5b5f602082840312156125f6575f80fd5b81356001600160401b0381111561260b575f80fd5b8201601f8101841361261b575f80fd5b803561262961235082612311565b8082825260208201915060206060840285010192508683111561264a575f80fd5b6020840193505b82841015612676576126638785612209565b8252602082019150606084019350612651565b9695505050505050565b5f8060408385031215612691575f80fd5b50508035926020909101359150565b5f805f606084860312156126b2575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610aa657610aa66126c9565b5f60208284031215612700575f80fd5b5051919050565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561276d575f80fd5b81516001600160401b03811115612782575f80fd5b8201601f81018413612792575f80fd5b80516127a061235082612311565b8082825260208201915060208360051b8501019250868311156127c1575f80fd5b6020840193505b828410156126765783516127db81612279565b8252602093840193909101906127c8565b828152604060208201525f610c4e60408301846123df565b604081525f612816604083018561255b565b905060018060a01b03831660208301529392505050565b8082028115828204841417610aa657610aa66126c9565b5f8261285e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f92019182525091905056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220f7bd4675c906140cf1d4d5a8d5ee54afb9ecd0d0a418a71c12c80642c9707c7164736f6c634300081a0033","sourceMap":"577:14714:105:-:0;;;1171:4:26;1128:48;;577:14714:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102d9575f3560e01c806381df174611610189578063d547741f116100d8578063ee96da0511610092578063efe97d051161006d578063efe97d05146109ee578063f34d002a14610a02578063f89fe60b14610a21578063fc2788ad14610a40575f80fd5b8063ee96da0514610953578063ee99205c1461099f578063ef9ae15c146109d5575f80fd5b8063d547741f14610808578063e1b2b22214610827578063e1ffa44c14610846578063e8124097146108b5578063e90d4c06146108fa578063ee377d901461093f575f80fd5b8063ad3cb1cc11610143578063bc90afbb1161011e578063bc90afbb1461078c578063c6e1b9db146107ab578063cf6772ad146107ca578063d2526fef146107e9575f80fd5b8063ad3cb1cc1461071c578063b274a93514610759578063b97dd9e214610778575f80fd5b806381df17461461067957806391d148541461069857806392a2ebf3146106b7578063949d7c2a146106cb578063a217fddf146106ea578063a3df415f146106fd575f80fd5b80634ed7e4351161024557806360fea5dd116101ff578063747e7295116101da578063747e72951461061c57806374e8e5641461063157806380e460f0146106455780638129fc1c14610665575f80fd5b806360fea5dd146105c95780636542384f146105e85780636b588ac714610607575f80fd5b80634ed7e435146105235780634f1ef2861461054457806352d1902d1461055757806353cd9e3c1461056b5780635a912c831461058a5780635db916ab146105a9575f80fd5b80631faea1ed116102965780631faea1ed1461045d57806320e0e4451461047c578063248a9ca3146104a75780632f2ff15d146104c657806336568abe146104e55780634b47d95514610504575f80fd5b806301ffc9a7146102dd57806308c7050f146103115780630a0b81cc146103325780631c4e4e27146103d15780631cfa2516146104265780631dfcce8c14610449575b5f80fd5b3480156102e8575f80fd5b506102fc6102f736600461219e565b610a76565b60405190151581526020015b60405180910390f35b34801561031c575f80fd5b5061033061032b36600461225f565b610aac565b005b34801561033d575f80fd5b506103af61034c36600461228d565b60408051606080820183525f8083526020808401829052928401819052948552600482528285206001600160a01b039490941685529281529281902081519283018252805483526001810154938301939093526002909201549181019190915290565b6040805182518152602080840151908201529181015190820152606001610308565b3480156103dc575f80fd5b5061040b6103eb3660046122bb565b60066020525f908152604090208054600182015460029092015490919083565b60408051938452602084019290925290820152606001610308565b348015610431575f80fd5b5061043b60015481565b604051908152602001610308565b348015610454575f80fd5b5061043b610bbc565b348015610468575f80fd5b5061043b6104773660046122d2565b610bcd565b348015610487575f80fd5b5061043b6104963660046122bb565b60036020525f908152604090205481565b3480156104b2575f80fd5b5061043b6104c13660046122bb565b610c58565b3480156104d1575f80fd5b506103306104e036600461228d565b610c78565b3480156104f0575f80fd5b506103306104ff36600461228d565b610c9a565b34801561050f575f80fd5b5061033061051e3660046123a6565b610cd2565b34801561052e575f80fd5b50610537610d3f565b6040516103089190612422565b610330610552366004612434565b610dab565b348015610562575f80fd5b5061043b610dc6565b348015610576575f80fd5b5061033061058536600461225f565b610de1565b348015610595575f80fd5b506103306105a43660046122bb565b610e9f565b3480156105b4575f80fd5b5061043b5f805160206128da83398151915281565b3480156105d4575f80fd5b5061043b6105e33660046124d9565b610f2d565b3480156105f3575f80fd5b5061043b6106023660046122bb565b610f3f565b348015610612575f80fd5b5061043b60025481565b348015610627575f80fd5b5061043b60095481565b34801561063c575f80fd5b5061043b610ff8565b348015610650575f80fd5b5061043b5f8051602061287a83398151915281565b348015610670575f80fd5b50610330611009565b348015610684575f80fd5b506103306106933660046124d9565b611113565b3480156106a3575f80fd5b506102fc6106b236600461228d565b611141565b3480156106c2575f80fd5b50610330611177565b3480156106d6575f80fd5b506103306106e53660046124d9565b61122c565b3480156106f5575f80fd5b5061043b5f81565b348015610708575f80fd5b506103306107173660046124f4565b6112ea565b348015610727575f80fd5b5061074c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516103089190612589565b348015610764575f80fd5b5061043b6107733660046124d9565b611482565b348015610783575f80fd5b5061043b611494565b348015610797575f80fd5b5061043b6107a636600461259b565b6114ff565b3480156107b6575f80fd5b5061043b6107c536600461228d565b611512565b3480156107d5575f80fd5b506103306107e43660046123a6565b61158b565b3480156107f4575f80fd5b506103306108033660046125c7565b6115d8565b348015610813575f80fd5b5061033061082236600461228d565b611603565b348015610832575f80fd5b506103306108413660046125e6565b61161f565b348015610851575f80fd5b506103af6108603660046122bb565b60408051606080820183525f8083526020808401829052928401819052600954815260088352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b3480156108c0575f80fd5b5061040b6108cf366004612680565b600860209081525f928352604080842090915290825290208054600182015460029092015490919083565b348015610905575f80fd5b5061040b61091436600461228d565b600460209081525f928352604080842090915290825290208054600182015460029092015490919083565b34801561094a575f80fd5b5061043b6116c4565b34801561095e575f80fd5b506103af61096d3660046126a0565b60408051606080820183525f808352602080840182905292840152825190810183529485528401929092529082015290565b3480156109aa575f80fd5b505f546109bd906001600160a01b031681565b6040516001600160a01b039091168152602001610308565b3480156109e0575f80fd5b506007546102fc9060ff1681565b3480156109f9575f80fd5b5061043b6116f4565b348015610a0d575f80fd5b5061043b610a1c36600461228d565b611724565b348015610a2c575f80fd5b50610330610a3b36600461225f565b6117df565b348015610a4b575f80fd5b5061043b610a5a366004612680565b600560209081525f928352604080842090915290825290205481565b5f6001600160e01b03198216637965db0b60e01b1480610aa657506301ffc9a760e01b6001600160e01b03198316145b92915050565b610aeb6040518060400160405280602081526020017f666f7263654c6174657374436f6d6d69746d656e742063616c6c65642062793a81525033611858565b610b025f8051602061287a83398151915233611141565b610b6c5760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b600160095f828254610b7e91906126dd565b90915550506009545f908152600860209081526040808320845184528252918290208351808255918401516001820155919092015160029182015555565b5f610bc8610602611494565b905090565b5f80546040516311b2104b60e31b8152306004820152602481018690526001600160a01b038581166044830152848116606483015290911690638d90825890608401602060405180830381865afa158015610c2a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c4e91906126f0565b90505b9392505050565b5f9081525f805160206128ba833981519152602052604090206001015490565b610c8182610c58565b610c8a8161189d565b610c9483836118a7565b50505050565b6001600160a01b0381163314610cc35760405163334bd91960e11b815260040160405180910390fd5b610ccd8282611948565b505050565b610cdc5f33611141565b610cf85760405162461bcd60e51b8152600401610b6390612707565b5f5b8151811015610d3b57610d335f8051602061287a833981519152838381518110610d2657610d26612749565b6020026020010151610c78565b600101610cfa565b5050565b5f54604051632924b73b60e01b81523060048201526060916001600160a01b031690632924b73b906024015f60405180830381865afa158015610d84573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610bc8919081019061275d565b610db36119c1565b610dbc82611a67565b610d3b8282611a71565b5f610dcf611b2d565b505f8051602061289a83398151915290565b610df85f8051602061287a83398151915233611141565b610e6a5760405162461bcd60e51b815260206004820152603f60248201527f5345545f4c4153545f41434345505445445f434f4d4d49544d454e545f41545f60448201527f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f4f4e4c59006064820152608401610b63565b6009545f9081526008602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b610eb65f8051602061287a83398151915233611141565b610f285760405162461bcd60e51b815260206004820152603760248201527f5345545f4c4153545f41434345505445445f424c4f434b5f4845494748545f4960448201527f535f434f4d4d49544d454e545f41444d494e5f4f4e4c590000000000000000006064820152608401610b63565b600255565b5f610aa6610f39611494565b83611724565b5f8054604051636ae501ef60e11b815230600482015282916001600160a01b03169063d5ca03de906024015f60405180830381865afa158015610f84573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610fab919081019061275d565b90505f805b8251811015610ff057610fdc85848381518110610fcf57610fcf612749565b6020026020010151611512565b610fe690836126dd565b9150600101610fb0565b509392505050565b5f600154600254610bc891906126dd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561104d5750825b90505f826001600160401b031660011480156110685750303b155b905081158015611076575080155b156110945760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156110be57845460ff60401b1916600160401b1785555b6110c6611b76565b831561110c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f8051602061287a83398151915261112a8161189d565b610d3b5f805160206128da83398151915283610c78565b5f9182525f805160206128ba833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6111815f33611141565b6111db5760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b6064820152608401610b63565b5f8054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561121a575f80fd5b505af1158015610c94573d5f803e3d5ffd5b61126b6040518060400160405280601f81526020017f6772616e74436f6d6d69746d656e7441646d696e2063616c6c65642062793a0081525033611858565b6112755f33611141565b6112915760405162461bcd60e51b8152600401610b6390612707565b6112a85f8051602061287a83398151915282610c78565b6112e76040518060400160405280602081526020017f436f6d6d69746d656e7441646d696e20726f6c65206772616e74656420746f3a81525082611858565b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561132e5750825b90505f826001600160401b031660011480156113495750303b155b905081158015611357575080155b156113755760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561139f57845460ff60401b1916600160401b1785555b6113a7611b82565b5f80546001600160a01b0319166001600160a01b038c16908117909155600189905560028a9055604051631a6e609f60e31b815263d37304f8906113f1908a908a906004016127ec565b5f604051808303815f87803b158015611408575f80fd5b505af115801561141a573d5f803e3d5ffd5b505050506114273361122c565b61143033611113565b831561147657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f610aa661148e611494565b83611512565b5f8054604051634d3223a560e01b81523060048201526001600160a01b0390911690634d3223a5906024015b602060405180830381865afa1580156114db573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bc891906126f0565b5f610c5161150b611494565b8484610bcd565b5f8054604051635cdf315560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690635cdf315590606401602060405180830381865afa158015611567573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5191906126f0565b5f8051602061287a8339815191526115a28161189d565b5f5b8251811015610ccd576115d05f805160206128da833981519152848381518110610d2657610d26612749565b6001016115a4565b5f8051602061287a8339815191526115ef8161189d565b506007805460ff1916911515919091179055565b61160c82610c58565b6116158161189d565b610c948383611948565b60075460ff168061164257506116425f805160206128da83398151915233611141565b61168e5760405162461bcd60e51b815260206004820152601d60248201527f554e415554484f52495a45445f424c4f434b5f434f4d4d49544d454e540000006044820152606401610b63565b5f5b8151811015610d3b576116bc338383815181106116af576116af612749565b6020026020010151611b94565b600101611690565b5f8054604051631868e3ff60e31b81523060048201526001600160a01b039091169063c3471ff8906024016114c0565b5f805460405163010913cb60e71b81523060048201526001600160a01b0390911690638489e580906024016114c0565b5f8054604051636ae501ef60e11b815230600482015282916001600160a01b03169063d5ca03de906024015f60405180830381865afa158015611769573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052611790919081019061275d565b90505f805b82518110156117d6576117c2868483815181106117b4576117b4612749565b602002602001015187610bcd565b6117cc90836126dd565b9150600101611795565b50949350505050565b60075460ff168061180257506118025f805160206128da83398151915233611141565b61184e5760405162461bcd60e51b815260206004820152601d60248201527f554e415554484f52495a45445f424c4f434b5f434f4d4d49544d454e540000006044820152606401610b63565b6112e73382611b94565b610d3b828260405160240161186e929190612804565b60408051601f198184030181529190526020810180516001600160e01b031663319af33360e01b179052611d14565b6112e78133611d1d565b5f5f805160206128ba8339815191526118c08484611141565b61193f575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556118f53390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610aa6565b5f915050610aa6565b5f5f805160206128ba8339815191526119618484611141565b1561193f575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610aa6565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611a4757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611a3b5f8051602061289a833981519152546001600160a01b031690565b6001600160a01b031614155b15611a655760405163703e46dd60e11b815260040160405180910390fd5b565b5f610d3b8161189d565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611acb575060408051601f3d908101601f19168201909252611ac8918101906126f0565b60015b611af357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b63565b5f8051602061289a8339815191528114611b2357604051632a87526960e21b815260048101829052602401610b63565b610ccd8383611d56565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614611a655760405163703e46dd60e11b815260040160405180910390fd5b611b7e611dab565b611a655b611b8a611dab565b6112e75f336118a7565b80515f9081526004602090815260408083206001600160a01b038616845290915290205415611bd657604051630ae09ad960e41b815260040160405180910390fd5b8051600154600254611be891906126dd565b1015611c0757604051630ae09ad960e41b815260040160405180910390fd5b80515f908152600360205260408120549003611c3657611c256116c4565b81515f908152600360205260409020555b80515f9081526004602090815260408083206001600160a01b0386168452825280832084518155918401516001830155830151600290910155611c7883610f2d565b82515f908152600560209081526040808320828701518452909152812080549293508392909190611caa9084906126dd565b9091555050604080830151602080850151835190815290810184905290917f4c9b7866113ce81c9ece48d2a0f4bb9d89d87f997a851cf3c448ee02f54559fd910160405180910390a25b611d0b6002546001611d0691906126dd565b611df4565b611cf457505050565b6112e781611f02565b611d278282611141565b610d3b5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b63565b611d5f82611f22565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611da357610ccd8282611f85565b610d3b611ff7565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16611a6557604051631afcd79f60e31b815260040160405180910390fd5b5f818152600360205260408120545b80611e0c611494565b1015611e1f57611e1a612016565b611e03565b5f6003611e2b83610f3f565b611e3690600261282d565b611e409190612844565b90505f611e4b610d3f565b90505f5b8151811015611ef7575f828281518110611e6b57611e6b612749565b6020908102919091018101515f8981526004835260408082206001600160a01b038416835284528082208151606081018352815480825260018301548288019081526002909301548285015284526005865282842091518452945290205490925085811115611eec57611edd82612055565b50600198975050505050505050565b505050600101611e4f565b505f95945050505050565b80516a636f6e736f6c652e6c6f67602083015f808483855afa5050505050565b806001600160a01b03163b5f03611f5757604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b63565b5f8051602061289a83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051611fa19190612863565b5f60405180830381855af49150503d805f8114611fd9576040519150601f19603f3d011682016040523d82523d5f602084013e611fde565b606091505b5091509150611fee858383612119565b95945050505050565b3415611a655760405163b398979f60e01b815260040160405180910390fd5b5f805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b15801561121a575f80fd5b5f61205e611494565b82515f9081526003602052604090205490915081146120905760405163071cab8b60e21b815260040160405180910390fd5b6009545f908152600860209081526040808320855184528252918290208451808255858301516001830181905586850151600293840181905592829055845190815292830152917f5b0d1f14085ff88796df21c2944d34c115838925a7bee30850fcacaaf902a379910160405180910390a28061210b6116c4565b1115610d3b57610d3b612016565b60608261212e5761212982612175565b610c51565b815115801561214557506001600160a01b0384163b155b1561216e57604051639996b31560e01b81526001600160a01b0385166004820152602401610b63565b5080610c51565b8051156121855780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156121ae575f80fd5b81356001600160e01b031981168114610c51575f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715612201576122016121c5565b604052919050565b5f60608284031215612219575f80fd5b604051606081016001600160401b038111828210171561223b5761223b6121c5565b60409081528335825260208085013590830152928301359281019290925250919050565b5f6060828403121561226f575f80fd5b610c518383612209565b6001600160a01b03811681146112e7575f80fd5b5f806040838503121561229e575f80fd5b8235915060208301356122b081612279565b809150509250929050565b5f602082840312156122cb575f80fd5b5035919050565b5f805f606084860312156122e4575f80fd5b8335925060208401356122f681612279565b9150604084013561230681612279565b809150509250925092565b5f6001600160401b03821115612329576123296121c5565b5060051b60200190565b5f82601f830112612342575f80fd5b813561235561235082612311565b6121d9565b8082825260208201915060208360051b860101925085831115612376575f80fd5b602085015b8381101561239c57803561238e81612279565b83526020928301920161237b565b5095945050505050565b5f602082840312156123b6575f80fd5b81356001600160401b038111156123cb575f80fd5b6123d784828501612333565b949350505050565b5f8151808452602084019350602083015f5b828110156124185781516001600160a01b03168652602095860195909101906001016123f1565b5093949350505050565b602081525f610c5160208301846123df565b5f8060408385031215612445575f80fd5b823561245081612279565b915060208301356001600160401b0381111561246a575f80fd5b8301601f8101851361247a575f80fd5b80356001600160401b03811115612493576124936121c5565b6124a6601f8201601f19166020016121d9565b8181528660208385010111156124ba575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156124e9575f80fd5b8135610c5181612279565b5f805f805f60a08688031215612508575f80fd5b853561251381612279565b945060208601359350604086013592506060860135915060808601356001600160401b03811115612542575f80fd5b61254e88828901612333565b9150509295509295909350565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f610c51602083018461255b565b5f80604083850312156125ac575f80fd5b82356125b781612279565b915060208301356122b081612279565b5f602082840312156125d7575f80fd5b81358015158114610c51575f80fd5b5f602082840312156125f6575f80fd5b81356001600160401b0381111561260b575f80fd5b8201601f8101841361261b575f80fd5b803561262961235082612311565b8082825260208201915060206060840285010192508683111561264a575f80fd5b6020840193505b82841015612676576126638785612209565b8252602082019150606084019350612651565b9695505050505050565b5f8060408385031215612691575f80fd5b50508035926020909101359150565b5f805f606084860312156126b2575f80fd5b505081359360208301359350604090920135919050565b634e487b7160e01b5f52601160045260245ffd5b80820180821115610aa657610aa66126c9565b5f60208284031215612700575f80fd5b5051919050565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121561276d575f80fd5b81516001600160401b03811115612782575f80fd5b8201601f81018413612792575f80fd5b80516127a061235082612311565b8082825260208201915060208360051b8501019250868311156127c1575f80fd5b6020840193505b828410156126765783516127db81612279565b8252602093840193909101906127c8565b828152604060208201525f610c4e60408301846123df565b604081525f612816604083018561255b565b905060018060a01b03831660208301529392505050565b8082028115828204841417610aa657610aa66126c9565b5f8261285e57634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f92019182525091905056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220f7bd4675c906140cf1d4d5a8d5ee54afb9ecd0d0a418a71c12c80642c9707c7164736f6c634300081a0033","sourceMap":"577:14714:105:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:24;;;;;;;;;;-1:-1:-1;3443:202:24;;;;;:::i;:::-;;:::i;:::-;;;470:14:138;;463:22;445:41;;433:2;418:18;3443:202:24;;;;;;;;7166:586:105;;;;;;;;;;-1:-1:-1;7166:586:105;;;;;:::i;:::-;;:::i;:::-;;6049:199;;;;;;;;;;-1:-1:-1;6049:199:105;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;6212:19:105;;;:11;:19;;;;;-1:-1:-1;;;;;6212:29:105;;;;;;;;;;;;;6205:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6049:199;;;;;2625:13:138;;2607:32;;2695:4;2683:17;;;2677:24;2655:20;;;2648:54;2746:17;;;2740:24;2718:20;;;2711:54;2595:2;2580:18;6049:199:105;2393:378:138;2060:69:106;;;;;;;;;;-1:-1:-1;2060:69:106;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3209:25:138;;;3265:2;3250:18;;3243:34;;;;3293:18;;;3286:34;3197:2;3182:18;2060:69:106;3007:319:138;1080:36:106;;;;;;;;;;;;;;;;;;;3477:25:138;;;3465:2;3450:18;1080:36:106;3331:177:138;5867:176:105;;;;;;;;;;;;;:::i;3280:325::-;;;;;;;;;;-1:-1:-1;3280:325:105;;;;;:::i;:::-;;:::i;1563:80:106:-;;;;;;;;;;-1:-1:-1;1563:80:106;;;;;:::i;:::-;;;;;;;;;;;;;;4759:191:24;;;;;;;;;;-1:-1:-1;4759:191:24;;;;;:::i;:::-;;:::i;5246:136::-;;;;;;;;;;-1:-1:-1;5246:136:24;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;;;;;-1:-1:-1;6348:245:24;;;;;:::i;:::-;;:::i;1885:326:105:-;;;;;;;;;;-1:-1:-1;1885:326:105;;;;;:::i;:::-;;:::i;7947:138::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;4158:214:26:-;;;;;;:::i;:::-;;:::i;3705:134::-;;;;;;;;;;;;;:::i;6313:355:105:-;;;;;;;;;;-1:-1:-1;6313:355:105;;;;;:::i;:::-;;:::i;6719:257::-;;;;;;;;;;-1:-1:-1;6719:257:105;;;;;:::i;:::-;;:::i;819:72::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;819:72:105;;4406:174;;;;;;;;;;-1:-1:-1;4406:174:105;;;;;:::i;:::-;;:::i;5158:471::-;;;;;;;;;;-1:-1:-1;5158:471:105;;;;;:::i;:::-;;:::i;1252:38:106:-;;;;;;;;;;;;;;;;2366:36;;;;;;;;;;;;;;;;2521:139:105;;;;;;;;;;;;;:::i;694:72::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;694:72:105;;528:89:108;;;;;;;;;;;;;:::i;12187:136:105:-;;;;;;;;;;-1:-1:-1;12187:136:105;;;;;:::i;:::-;;:::i;3732:207:24:-;;;;;;;;;;-1:-1:-1;3732:207:24;;;;;:::i;:::-;;:::i;4923:229:105:-;;;;;;;;;;;;;:::i;1507:372::-;;;;;;;;;;-1:-1:-1;1507:372:105;;;;;:::i;:::-;;:::i;2317:49:24:-;;;;;;;;;;-1:-1:-1;2317:49:24;2362:4;2317:49;;898:603:105;;;;;;;;;;-1:-1:-1;898:603:105;;;;;:::i;:::-;;:::i;1819:58:26:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:26;;;;;;;;;;;;:::i;5685:176:105:-;;;;;;;;;;-1:-1:-1;5685:176:105;;;;;:::i;:::-;;:::i;2933:127::-;;;;;;;;;;;;;:::i;4202:198::-;;;;;;;;;;-1:-1:-1;4202:198:105;;;;;:::i;:::-;;:::i;4632:285::-;;;;;;;;;;-1:-1:-1;4632:285:105;;;;;:::i;:::-;;:::i;12329:227::-;;;;;;;;;;-1:-1:-1;12329:227:105;;;;;:::i;:::-;;:::i;12562:132::-;;;;;;;;;;-1:-1:-1;12562:132:105;;;;;:::i;:::-;;:::i;5662:138:24:-;;;;;;;;;;-1:-1:-1;5662:138:24;;;;;:::i;:::-;;:::i;13011:395:105:-;;;;;;;;;;-1:-1:-1;13011:395:105;;;;;:::i;:::-;;:::i;7758:183::-;;;;;;;;;;-1:-1:-1;7758:183:105;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;7904:21:105;;7880:46;;:23;:46;;;;;:54;;;;;;;;;;7873:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7758:183;2262:98:106;;;;;;;;;;-1:-1:-1;2262:98:106;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1720:95;;;;;;;;;;-1:-1:-1;1720:95:106;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2724:135:105;;;;;;;;;;;;;:::i;2245:227::-;;;;;;;;;;-1:-1:-1;2245:227:105;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;2421:44:105;;;;;;;;;;;;;;;;;;;;;2245:227;293:39:106;;;;;;;;;;-1:-1:-1;293:39:106;;;;-1:-1:-1;;;;;293:39:106;;;;;;-1:-1:-1;;;;;12013:32:138;;;11995:51;;11983:2;11968:18;293:39:106;11823:229:138;2177:34:106;;;;;;;;;;-1:-1:-1;2177:34:106;;;;;;;;3093:121:105;;;;;;;;;;;;;:::i;3637:495::-;;;;;;;;;;-1:-1:-1;3637:495:105;;;;;:::i;:::-;;:::i;12700:305::-;;;;;;;;;;-1:-1:-1;12700:305:105;;;;;:::i;:::-;;:::i;1904:101:106:-;;;;;;;;;;-1:-1:-1;1904:101:106;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:24;3528:4;-1:-1:-1;;;;;;3551:47:24;;-1:-1:-1;;;3551:47:24;;:87;;-1:-1:-1;;;;;;;;;;1133:40:32;;;3602:36:24;3544:94;3443:202;-1:-1:-1;;3443:202:24:o;7166:586:105:-;7254:59;;;;;;;;;;;;;;;;;;7302:10;7254:11;:59::i;:::-;7344:37;-1:-1:-1;;;;;;;;;;;7370:10:105;7344:7;:37::i;:::-;7323:132;;;;-1:-1:-1;;;7323:132:105;;12610:2:138;7323:132:105;;;12592:21:138;12649:2;12629:18;;;12622:30;12688:34;12668:18;;;12661:62;-1:-1:-1;;;12739:18:138;;;12732:46;12795:19;;7323:132:105;;;;;;;;;7587:1;7562:21;;:26;;;;;;;:::i;:::-;;;;-1:-1:-1;;7622:21:105;;7598:46;;;;:23;:46;;;;;;;;7645:22;;7598:70;;;;;;;;:88;;;;;;;;;;;;;;;;;;;;;;;7696:48;7166:586::o;5867:176::-;5959:7;5989:47;6018:17;:15;:17::i;5989:47::-;5982:54;;5867:176;:::o;3280:325::-;3408:7;3446:15;;:152;;-1:-1:-1;;;3446:152:105;;3503:4;3446:152;;;13318:51:138;13385:18;;;13378:34;;;-1:-1:-1;;;;;13448:32:138;;;13428:18;;;13421:60;13517:32;;;13497:18;;;13490:60;3446:15:105;;;;:31;;13290:19:138;;3446:152:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3427:171;;3280:325;;;;;;:::o;4759:191:24:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:24;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;-1:-1:-1;;;;;6441:34:24;;966:10:29;6441:34:24;6437:102;;6498:30;;-1:-1:-1;;;6498:30:24;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;1885:326:105:-;1985:39;2362:4:24;2013:10:105;1985:7;:39::i;:::-;1964:120;;;;-1:-1:-1;;;1964:120:105;;;;;;;:::i;:::-;2099:9;2094:111;2118:8;:15;2114:1;:19;2094:111;;;2154:40;-1:-1:-1;;;;;;;;;;;2182:8:105;2191:1;2182:11;;;;;;;;:::i;:::-;;;;;;;2154:9;:40::i;:::-;2135:3;;2094:111;;;;1885:326;:::o;7947:138::-;8027:15;;:51;;-1:-1:-1;;;8027:51:105;;8072:4;8027:51;;;11995::138;7992:16:105;;-1:-1:-1;;;;;8027:15:105;;:36;;11968:18:138;;8027:51:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8027:51:105;;;;;;;;;;;;:::i;4158:214:26:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;3705:134::-:0;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:26;:::o;6313:355:105:-;6435:37;-1:-1:-1;;;;;;;;;;;6461:10:105;6435:7;:37::i;:::-;6414:147;;;;-1:-1:-1;;;6414:147:105;;15651:2:138;6414:147:105;;;15633:21:138;15690:2;15670:18;;;15663:30;15729:34;15709:18;;;15702:62;15800:33;15780:18;;;15773:61;15851:19;;6414:147:105;15449:427:138;6414:147:105;6595:21;;6571:46;;;;:23;:46;;;;;;;;6618:22;;6571:70;;;;;;;;:88;;;;;;;;;;;;;;;;;;;;6313:355::o;6719:257::-;6809:37;-1:-1:-1;;;;;;;;;;;6835:10:105;6809:7;:37::i;:::-;6788:139;;;;-1:-1:-1;;;6788:139:105;;16083:2:138;6788:139:105;;;16065:21:138;16122:2;16102:18;;;16095:30;16161:34;16141:18;;;16134:62;16232:25;16212:18;;;16205:53;16275:19;;6788:139:105;15881:419:138;6788:139:105;6937:23;:32;6719:257::o;4406:174::-;4496:7;4522:51;4545:17;:15;:17::i;:::-;4564:8;4522:22;:51::i;5158:471::-;5246:7;5295:15;;:74;;-1:-1:-1;;;5295:74:105;;5354:4;5295:74;;;11995:51:138;5246:7:105;;-1:-1:-1;;;;;5295:15:105;;:37;;11968:18:138;;5295:74:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5295:74:105;;;;;;;;;;;;:::i;:::-;5265:104;;5379:18;5416:9;5411:185;5435:10;:17;5431:1;:21;5411:185;;;5542:43;5564:5;5571:10;5582:1;5571:13;;;;;;;;:::i;:::-;;;;;;;5542:21;:43::i;:::-;5528:57;;;;:::i;:::-;;-1:-1:-1;5454:3:105;;5411:185;;;-1:-1:-1;5612:10:105;5158:471;-1:-1:-1;;;5158:471:105:o;2521:139::-;2580:7;2632:21;;2606:23;;:47;;;;:::i;528:89:108:-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;-1:-1:-1;;;;;4348:14:25;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:25;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;587:23:108::1;:21;:23::i;:::-;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;16458:50:138;;5142:14:25;;16446:2:138;16431:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;528:89:108:o;12187:136:105:-;-1:-1:-1;;;;;;;;;;;3191:16:24;3202:4;3191:10;:16::i;:::-;12279:37:105::1;-1:-1:-1::0;;;;;;;;;;;12307:8:105::1;12279:9;:37::i;3732:207:24:-:0;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:24;;;;;;;;-1:-1:-1;;;;;3901:31:24;;;;;;;;;;;;;;;3732:207::o;4923:229:105:-;4994:39;2362:4:24;5022:10:105;4994:7;:39::i;:::-;4973:123;;;;-1:-1:-1;;;4973:123:105;;16721:2:138;4973:123:105;;;16703:21:138;16760:2;16740:18;;;16733:30;16799:34;16779:18;;;16772:62;-1:-1:-1;;;16850:18:138;;;16843:35;16895:19;;4973:123:105;16519:401:138;4973:123:105;5106:15;;;:39;;;-1:-1:-1;;;5106:39:105;;;;-1:-1:-1;;;;;5106:15:105;;;;:37;;:39;;;;;;;;;;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;1507:372;1571:58;;;;;;;;;;;;;;;;;;1618:10;1571:11;:58::i;:::-;1660:39;2362:4:24;1688:10:105;1660:7;:39::i;:::-;1639:120;;;;-1:-1:-1;;;1639:120:105;;;;;;;:::i;:::-;1769:36;-1:-1:-1;;;;;;;;;;;1797:7:105;1769:9;:36::i;:::-;1815:56;;;;;;;;;;;;;;;;;;1863:7;1815:11;:56::i;:::-;1507:372;:::o;898:603::-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;-1:-1:-1;;;;;4348:14:25;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:25;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;1148:33:105::1;:31;:33::i;:::-;1191:15;:34:::0;;-1:-1:-1;;;;;;1191:34:105::1;-1:-1:-1::0;;;;;1191:34:105;::::1;::::0;;::::1;::::0;;;-1:-1:-1;1235:46:105;;;1291:23:::1;:50:::0;;;1351:59:::1;::::0;-1:-1:-1;;;1351:59:105;;:30:::1;::::0;:59:::1;::::0;1382:14;;1398:11;;1351:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;1420:32;1441:10;1420:20;:32::i;:::-;1462;1483:10;1462:20;:32::i;:::-;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;16458:50:138;;5142:14:25;;16446:2:138;16431:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;898:603:105;;;;;:::o;5685:176::-;5777:7;5803:51;5825:17;:15;:17::i;:::-;5844:9;5803:21;:51::i;2933:127::-;2981:7;3007:15;;:46;;-1:-1:-1;;;3007:46:105;;3047:4;3007:46;;;11995:51:138;-1:-1:-1;;;;;3007:15:105;;;;:31;;11968:18:138;;3007:46:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4202:198::-;4312:7;4338:55;4354:17;:15;:17::i;:::-;4373:9;4384:8;4338:15;:55::i;4632:285::-;4740:7;4778:15;;:132;;-1:-1:-1;;;4778:132:105;;4841:4;4778:132;;;17464:51:138;17531:18;;;17524:34;;;-1:-1:-1;;;;;17594:32:138;;;17574:18;;;17567:60;4778:15:105;;;;:37;;17437:18:138;;4778:132:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;12329:227::-;-1:-1:-1;;;;;;;;;;;3191:16:24;3202:4;3191:10;:16::i;:::-;12441:9:105::1;12436:113;12460:9;:16;12456:1;:20;12436:113;;;12497:41;-1:-1:-1::0;;;;;;;;;;;12525:9:105::1;12535:1;12525:12;;;;;;;;:::i;12497:41::-;12478:3;;12436:113;;12562:132:::0;-1:-1:-1;;;;;;;;;;;3191:16:24;3202:4;3191:10;:16::i;:::-;-1:-1:-1;12655:22:105::1;:32:::0;;-1:-1:-1;;12655:32:105::1;::::0;::::1;;::::0;;;::::1;::::0;;12562:132::o;5662:138:24:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;13011:395:105:-:0;13128:22;;;;;:63;;;13154:37;-1:-1:-1;;;;;;;;;;;13180:10:105;13154:7;:37::i;:::-;13107:139;;;;-1:-1:-1;;;13107:139:105;;17840:2:138;13107:139:105;;;17822:21:138;17879:2;17859:18;;;17852:30;17918:31;17898:18;;;17891:59;17967:18;;13107:139:105;17638:353:138;13107:139:105;13261:9;13256:144;13280:16;:23;13276:1;:27;13256:144;;;13324:65;13357:10;13369:16;13386:1;13369:19;;;;;;;;:::i;:::-;;;;;;;13324:32;:65::i;:::-;13305:3;;13256:144;;2724:135;2776:7;2802:15;;:50;;-1:-1:-1;;;2802:50:105;;2846:4;2802:50;;;11995:51:138;-1:-1:-1;;;;;2802:15:105;;;;:35;;11968:18:138;;2802:50:105;11823:229:138;3093:121:105;3138:7;3164:15;;:43;;-1:-1:-1;;;3164:43:105;;3201:4;3164:43;;;11995:51:138;-1:-1:-1;;;;;3164:15:105;;;;:28;;11968:18:138;;3164:43:105;11823:229:138;3637:495:105;3745:7;3794:15;;:74;;-1:-1:-1;;;3794:74:105;;3853:4;3794:74;;;11995:51:138;3745:7:105;;-1:-1:-1;;;;;3794:15:105;;:37;;11968:18:138;;3794:74:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3794:74:105;;;;;;;;;;;;:::i;:::-;3764:104;;3878:18;3915:9;3910:189;3934:10;:17;3930:1;:21;3910:189;;;4041:47;4057:5;4064:10;4075:1;4064:13;;;;;;;;:::i;:::-;;;;;;;4079:8;4041:15;:47::i;:::-;4027:61;;;;:::i;:::-;;-1:-1:-1;3953:3:105;;3910:189;;;-1:-1:-1;4115:10:105;3637:495;-1:-1:-1;;;;3637:495:105:o;12700:305::-;12809:22;;;;;:63;;;12835:37;-1:-1:-1;;;;;;;;;;;12861:10:105;12835:7;:37::i;:::-;12788:139;;;;-1:-1:-1;;;12788:139:105;;17840:2:138;12788:139:105;;;17822:21:138;17879:2;17859:18;;;17852:30;17918:31;17898:18;;;17891:59;17967:18;;12788:139:105;17638:353:138;12788:139:105;12937:61;12970:10;12982:15;12937:32;:61::i;7621:145:15:-;7688:71;7751:2;7755;7704:54;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;7704:54:15;;;;;;;;;;;;;;-1:-1:-1;;;;;7704:54:15;-1:-1:-1;;;7704:54:15;;;7688:15;:71::i;4148:103:24:-;4214:30;4225:4;966:10:29;4214::24;:30::i;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:24;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:24;;;;;;;;;:38;;-1:-1:-1;;7475:38:24;7509:4;7475:38;;;7559:12;966:10:29;;887:96;7559:12:24;-1:-1:-1;;;;;7532:40:24;7550:7;-1:-1:-1;;;;;7532:40:24;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:24;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:24;;;;;;;;;;:39;;-1:-1:-1;;8097:39:24;;;8155:40;966:10:29;;8097:14:24;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4599:312:26;4679:4;-1:-1:-1;;;;;4688:6:26;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:26;:32;-1:-1:-1;;;;;;;;;;;2035:53:43;-1:-1:-1;;;;;2035:53:43;;1957:138;4749:32:26;-1:-1:-1;;;;;4749:42:26;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:26;;;;;;;;;;;4654:251;4599:312::o;991:117:108:-;2362:4:24;3191:16;2362:4;3191:10;:16::i;6052:538:26:-;6169:17;-1:-1:-1;;;;;6151:50:26;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:26;;;;;;;;-1:-1:-1;;6151:52:26;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:26;;-1:-1:-1;;;;;12013:32:138;;6513:60:26;;;11995:51:138;11968:18;;6513:60:26;11823:229:138;6147:437:26;-1:-1:-1;;;;;;;;;;;6245:40:26;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:26;;;;;3477:25:138;;;3450:18;;6312:34:26;3331:177:138;6241:120:26;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:26;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:26;;;;;;;;;;;623:109:108;6931:20:25;:18;:20::i;:::-;692:33:108::1;738:128:::0;6931:20:25;:18;:20::i;:::-;817:42:108::1;2362:4:24;848:10:108;817;:42::i;8163:2197:105:-:0;8388:22;;8376:35;;;;:11;:35;;;;;;;;-1:-1:-1;;;;;8376:45:105;;;;;;;;;:52;:57;8372:108;;8454:26;;-1:-1:-1;;;8454:26:105;;;;;;;;;;;8372:108;8916:22;;8880:21;;8854:23;;:47;;8880:21;8854:47;:::i;:::-;:84;8837:145;;;8956:26;;-1:-1:-1;;;8956:26:105;;;;;;;;;;;8837:145;9112:22;;9084:51;;;;:27;:51;;;;;;:56;;9080:291;;9339:21;:19;:21::i;:::-;9300:22;;9255:81;;;;:27;:81;;;;;:105;9080:291;9439:22;;9427:35;;;;:11;:35;;;;;;;;-1:-1:-1;;;;;9427:45:105;;;;;;;;;:63;;;;;;;;;;;;;;;;;;;;9583:37;9463:8;9583:27;:37::i;:::-;9647:22;;9630:40;;;;:16;:40;;;;;;;;9684:26;;;;9630:90;;;;;;;:114;;9552:68;;-1:-1:-1;9552:68:105;;9630:90;;:40;:114;;9552:68;;9630:114;:::i;:::-;;;;-1:-1:-1;;9798:23:105;;;;;9835:26;;;;;9760:145;;18681:25:138;;;18722:18;;;18715:34;;;9798:23:105;;9760:145;;18654:18:138;9760:145:105;;;;;;;10297:57;10304:46;10322:23;;10348:1;10322:27;;;;:::i;:::-;10304:17;:46::i;:::-;10297:57;;8294:2066;8163:2197;;:::o;408:133:15:-;479:55;526:7;505:19;479:55::i;4381:197:24:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:24;;-1:-1:-1;;;;;18952:32:138;;4514:47:24;;;18934:51:138;19001:18;;;18994:34;;;18907:18;;4514:47:24;18760:274:138;2779:335:43;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:43;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;7084:141:25:-;8870:21;8560:40;-1:-1:-1;;;8560:40:25;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:25;;;;;;;;;;;10382:1799:105;10448:4;10539:40;;;:27;:40;;;;;;10908:79;10935:10;10915:17;:15;:17::i;:::-;:30;10908:79;;;10961:15;:13;:15::i;:::-;10908:79;;;11158:21;11243:1;11187:40;11216:10;11187:28;:40::i;:::-;11183:44;;:1;:44;:::i;:::-;11182:62;;;;:::i;:::-;11158:86;;11254:26;11283:14;:12;:14::i;:::-;11254:43;;11354:9;11349:803;11373:9;:16;11369:1;:20;11349:803;;;11410:16;11429:9;11439:1;11429:12;;;;;;;;:::i;:::-;;;;;;;;;;;;11525:38;11566:24;;;:11;:24;;;;;;-1:-1:-1;;;;;11566:64:105;;;;;;;;;11525:105;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11733:70;;:16;:70;;;;;11804:26;;11733:98;;;;;;;11429:12;;-1:-1:-1;11850:38:105;;;11846:296;;;11999:39;12022:15;11999:22;:39::i;:::-;-1:-1:-1;12123:4:105;;10382:1799;-1:-1:-1;;;;;;;;10382:1799:105:o;11846:296::-;-1:-1:-1;;;11391:3:105;;11349:803;;;-1:-1:-1;12169:5:105;;10382:1799;-1:-1:-1;;;;;10382:1799:105:o;547:380:15:-;645:14;;131:42;818:2;805:16;;621:21;;645:14;805:16;131:42;854:5;843:68;834:77;;771:150;;547:380;:::o;2186:281:43:-;2263:17;-1:-1:-1;;;;;2263:29:43;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:43;;-1:-1:-1;;;;;12013:32:138;;2320:47:43;;;11995:51:138;11968:18;;2320:47:43;11823:229:138;2259:119:43;-1:-1:-1;;;;;;;;;;;2387:73:43;;-1:-1:-1;;;;;;2387:73:43;-1:-1:-1;;;;;2387:73:43;;;;;;;;;;2186:281::o;4106:253:56:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:56;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:56:o;6598:122:43:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:43;;;;;;;;;;;15207:82:105;15251:15;;;:31;;;-1:-1:-1;;;15251:31:105;;;;-1:-1:-1;;;;;15251:15:105;;;;:29;;:31;;;;;;;;;;:15;;:31;;;;;;;;;;13593:1184;13698:20;13721:17;:15;:17::i;:::-;13949:22;;13921:51;;;;:27;:51;;;;;;13698:40;;-1:-1:-1;13921:67:105;;13917:121;;14009:29;;-1:-1:-1;;;14009:29:105;;;;;;;;;;;13917:121;14114:21;;14090:46;;;;:23;:46;;;;;;;;14137:22;;14090:70;;;;;;;;:88;;;;;;;;;;;;;;;;;;;;;;;;;;14231:48;;;;14453:136;;18681:25:138;;;18722:18;;;18715:34;14090:88:105;14453:136;;18654:18:138;14453:136:105;;;;;;;14717:12;14693:21;:19;:21::i;:::-;:36;14689:82;;;14745:15;:13;:15::i;4625:582:56:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:56;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:56;;-1:-1:-1;;;;;12013:32:138;;5121:24:56;;;11995:51:138;11968:18;;5121:24:56;11823:229:138;5041:119:56;-1:-1:-1;5180:10:56;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:56;;;;;;;;;;;14:286:138;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:138;;209:43;;199:71;;266:1;263;256:12;497:127;558:10;553:3;549:20;546:1;539:31;589:4;586:1;579:15;613:4;610:1;603:15;629:275;700:2;694:9;765:2;746:13;;-1:-1:-1;;742:27:138;730:40;;-1:-1:-1;;;;;785:34:138;;821:22;;;782:62;779:88;;;847:18;;:::i;:::-;883:2;876:22;629:275;;-1:-1:-1;629:275:138:o;909:722::-;971:5;1019:4;1007:9;1002:3;998:19;994:30;991:50;;;1037:1;1034;1027:12;991:50;1090:2;1084:9;1132:4;1120:17;;-1:-1:-1;;;;;1152:34:138;;1188:22;;;1149:62;1146:88;;;1214:18;;:::i;:::-;1250:2;1243:22;;;1334:23;;1366;;1462:2;1447:18;;;1434:32;1482:15;;;1475:32;1565:18;;;1552:32;1600:15;;;1593:32;;;;-1:-1:-1;1283:6:138;909:722;-1:-1:-1;909:722:138:o;1636:244::-;1729:6;1782:2;1770:9;1761:7;1757:23;1753:32;1750:52;;;1798:1;1795;1788:12;1750:52;1821:53;1866:7;1855:9;1821:53;:::i;1885:131::-;-1:-1:-1;;;;;1960:31:138;;1950:42;;1940:70;;2006:1;2003;1996:12;2021:367;2089:6;2097;2150:2;2138:9;2129:7;2125:23;2121:32;2118:52;;;2166:1;2163;2156:12;2118:52;2211:23;;;-1:-1:-1;2310:2:138;2295:18;;2282:32;2323:33;2282:32;2323:33;:::i;:::-;2375:7;2365:17;;;2021:367;;;;;:::o;2776:226::-;2835:6;2888:2;2876:9;2867:7;2863:23;2859:32;2856:52;;;2904:1;2901;2894:12;2856:52;-1:-1:-1;2949:23:138;;2776:226;-1:-1:-1;2776:226:138:o;3513:508::-;3590:6;3598;3606;3659:2;3647:9;3638:7;3634:23;3630:32;3627:52;;;3675:1;3672;3665:12;3627:52;3720:23;;;-1:-1:-1;3819:2:138;3804:18;;3791:32;3832:33;3791:32;3832:33;:::i;:::-;3884:7;-1:-1:-1;3943:2:138;3928:18;;3915:32;3956:33;3915:32;3956:33;:::i;:::-;4008:7;3998:17;;;3513:508;;;;;:::o;4811:183::-;4871:4;-1:-1:-1;;;;;4896:6:138;4893:30;4890:56;;;4926:18;;:::i;:::-;-1:-1:-1;4971:1:138;4967:14;4983:4;4963:25;;4811:183::o;4999:744::-;5053:5;5106:3;5099:4;5091:6;5087:17;5083:27;5073:55;;5124:1;5121;5114:12;5073:55;5164:6;5151:20;5191:64;5207:47;5247:6;5207:47;:::i;:::-;5191:64;:::i;:::-;5279:3;5303:6;5298:3;5291:19;5335:4;5330:3;5326:14;5319:21;;5396:4;5386:6;5383:1;5379:14;5371:6;5367:27;5363:38;5349:52;;5424:3;5416:6;5413:15;5410:35;;;5441:1;5438;5431:12;5410:35;5477:4;5469:6;5465:17;5491:221;5507:6;5502:3;5499:15;5491:221;;;5589:3;5576:17;5606:31;5631:5;5606:31;:::i;:::-;5650:18;;5697:4;5688:14;;;;5524;5491:221;;;-1:-1:-1;5730:7:138;4999:744;-1:-1:-1;;;;;4999:744:138:o;5748:348::-;5832:6;5885:2;5873:9;5864:7;5860:23;5856:32;5853:52;;;5901:1;5898;5891:12;5853:52;5941:9;5928:23;-1:-1:-1;;;;;5966:6:138;5963:30;5960:50;;;6006:1;6003;5996:12;5960:50;6029:61;6082:7;6073:6;6062:9;6058:22;6029:61;:::i;:::-;6019:71;5748:348;-1:-1:-1;;;;5748:348:138:o;6101:446::-;6154:3;6192:5;6186:12;6219:6;6214:3;6207:19;6251:4;6246:3;6242:14;6235:21;;6290:4;6283:5;6279:16;6313:1;6323:199;6337:6;6334:1;6331:13;6323:199;;;6402:13;;-1:-1:-1;;;;;6398:39:138;6386:52;;6467:4;6458:14;;;;6495:17;;;;6434:1;6352:9;6323:199;;;-1:-1:-1;6538:3:138;;6101:446;-1:-1:-1;;;;6101:446:138:o;6552:261::-;6731:2;6720:9;6713:21;6694:4;6751:56;6803:2;6792:9;6788:18;6780:6;6751:56;:::i;6818:900::-;6895:6;6903;6956:2;6944:9;6935:7;6931:23;6927:32;6924:52;;;6972:1;6969;6962:12;6924:52;7011:9;6998:23;7030:31;7055:5;7030:31;:::i;:::-;7080:5;-1:-1:-1;7136:2:138;7121:18;;7108:32;-1:-1:-1;;;;;7152:30:138;;7149:50;;;7195:1;7192;7185:12;7149:50;7218:22;;7271:4;7263:13;;7259:27;-1:-1:-1;7249:55:138;;7300:1;7297;7290:12;7249:55;7340:2;7327:16;-1:-1:-1;;;;;7358:6:138;7355:30;7352:56;;;7388:18;;:::i;:::-;7430:57;7477:2;7454:17;;-1:-1:-1;;7450:31:138;7483:2;7446:40;7430:57;:::i;:::-;7510:6;7503:5;7496:21;7558:7;7553:2;7544:6;7540:2;7536:15;7532:24;7529:37;7526:57;;;7579:1;7576;7569:12;7526:57;7634:6;7629:2;7625;7621:11;7616:2;7609:5;7605:14;7592:49;7686:1;7681:2;7672:6;7665:5;7661:18;7657:27;7650:38;7707:5;7697:15;;;;;6818:900;;;;;:::o;7723:247::-;7782:6;7835:2;7823:9;7814:7;7810:23;7806:32;7803:52;;;7851:1;7848;7841:12;7803:52;7890:9;7877:23;7909:31;7934:5;7909:31;:::i;7975:871::-;8121:6;8129;8137;8145;8153;8206:3;8194:9;8185:7;8181:23;8177:33;8174:53;;;8223:1;8220;8213:12;8174:53;8262:9;8249:23;8281:31;8306:5;8281:31;:::i;:::-;8331:5;-1:-1:-1;8409:2:138;8394:18;;8381:32;;-1:-1:-1;8512:2:138;8497:18;;8484:32;;-1:-1:-1;8615:2:138;8600:18;;8587:32;;-1:-1:-1;8696:3:138;8681:19;;8668:33;-1:-1:-1;;;;;8713:30:138;;8710:50;;;8756:1;8753;8746:12;8710:50;8779:61;8832:7;8823:6;8812:9;8808:22;8779:61;:::i;:::-;8769:71;;;7975:871;;;;;;;;:::o;8851:289::-;8893:3;8931:5;8925:12;8958:6;8953:3;8946:19;9014:6;9007:4;9000:5;8996:16;8989:4;8984:3;8980:14;8974:47;9066:1;9059:4;9050:6;9045:3;9041:16;9037:27;9030:38;9129:4;9122:2;9118:7;9113:2;9105:6;9101:15;9097:29;9092:3;9088:39;9084:50;9077:57;;;8851:289;;;;:::o;9145:220::-;9294:2;9283:9;9276:21;9257:4;9314:45;9355:2;9344:9;9340:18;9332:6;9314:45;:::i;9370:388::-;9438:6;9446;9499:2;9487:9;9478:7;9474:23;9470:32;9467:52;;;9515:1;9512;9505:12;9467:52;9554:9;9541:23;9573:31;9598:5;9573:31;:::i;:::-;9623:5;-1:-1:-1;9680:2:138;9665:18;;9652:32;9693:33;9652:32;9693:33;:::i;9763:273::-;9819:6;9872:2;9860:9;9851:7;9847:23;9843:32;9840:52;;;9888:1;9885;9878:12;9840:52;9927:9;9914:23;9980:5;9973:13;9966:21;9959:5;9956:32;9946:60;;10002:1;9999;9992:12;10041:955;10159:6;10212:2;10200:9;10191:7;10187:23;10183:32;10180:52;;;10228:1;10225;10218:12;10180:52;10268:9;10255:23;-1:-1:-1;;;;;10293:6:138;10290:30;10287:50;;;10333:1;10330;10323:12;10287:50;10356:22;;10409:4;10401:13;;10397:27;-1:-1:-1;10387:55:138;;10438:1;10435;10428:12;10387:55;10478:2;10465:16;10501:64;10517:47;10557:6;10517:47;:::i;10501:64::-;10587:3;10611:6;10606:3;10599:19;10643:2;10638:3;10634:12;10627:19;;10701:2;10693:4;10685:6;10681:17;10677:2;10673:26;10669:35;10655:49;;10727:7;10719:6;10716:19;10713:39;;;10748:1;10745;10738:12;10713:39;10780:2;10776;10772:11;10761:22;;10792:174;10808:6;10803:3;10800:15;10792:174;;;10876:47;10915:7;10910:3;10876:47;:::i;:::-;10871:3;10864:60;10953:2;10948:3;10944:12;10937:19;;10834:4;10829:3;10825:14;10818:21;;10792:174;;;10985:5;10041:955;-1:-1:-1;;;;;;10041:955:138:o;11001:346::-;11069:6;11077;11130:2;11118:9;11109:7;11105:23;11101:32;11098:52;;;11146:1;11143;11136:12;11098:52;-1:-1:-1;;11191:23:138;;;11311:2;11296:18;;;11283:32;;-1:-1:-1;11001:346:138:o;11352:466::-;11429:6;11437;11445;11498:2;11486:9;11477:7;11473:23;11469:32;11466:52;;;11514:1;11511;11504:12;11466:52;-1:-1:-1;;11559:23:138;;;11679:2;11664:18;;11651:32;;-1:-1:-1;11782:2:138;11767:18;;;11754:32;;11352:466;-1:-1:-1;11352:466:138:o;12825:127::-;12886:10;12881:3;12877:20;12874:1;12867:31;12917:4;12914:1;12907:15;12941:4;12938:1;12931:15;12957:125;13022:9;;;13043:10;;;13040:36;;;13056:18;;:::i;13561:184::-;13631:6;13684:2;13672:9;13663:7;13659:23;13655:32;13652:52;;;13700:1;13697;13690:12;13652:52;-1:-1:-1;13723:16:138;;13561:184;-1:-1:-1;13561:184:138:o;13750:398::-;13952:2;13934:21;;;13991:2;13971:18;;;13964:30;14030:34;14025:2;14010:18;;14003:62;-1:-1:-1;;;14096:2:138;14081:18;;14074:32;14138:3;14123:19;;13750:398::o;14153:127::-;14214:10;14209:3;14205:20;14202:1;14195:31;14245:4;14242:1;14235:15;14269:4;14266:1;14259:15;14493:951;14588:6;14641:2;14629:9;14620:7;14616:23;14612:32;14609:52;;;14657:1;14654;14647:12;14609:52;14690:9;14684:16;-1:-1:-1;;;;;14715:6:138;14712:30;14709:50;;;14755:1;14752;14745:12;14709:50;14778:22;;14831:4;14823:13;;14819:27;-1:-1:-1;14809:55:138;;14860:1;14857;14850:12;14809:55;14893:2;14887:9;14916:64;14932:47;14972:6;14932:47;:::i;14916:64::-;15002:3;15026:6;15021:3;15014:19;15058:2;15053:3;15049:12;15042:19;;15113:2;15103:6;15100:1;15096:14;15092:2;15088:23;15084:32;15070:46;;15139:7;15131:6;15128:19;15125:39;;;15160:1;15157;15150:12;15125:39;15192:2;15188;15184:11;15173:22;;15204:210;15220:6;15215:3;15212:15;15204:210;;;15293:3;15287:10;15310:31;15335:5;15310:31;:::i;:::-;15354:18;;15401:2;15237:12;;;;15392;;;;15204:210;;16925:332;17132:6;17121:9;17114:25;17175:2;17170;17159:9;17155:18;17148:30;17095:4;17195:56;17247:2;17236:9;17232:18;17224:6;17195:56;:::i;17996:317::-;18173:2;18162:9;18155:21;18136:4;18193:45;18234:2;18223:9;18219:18;18211:6;18193:45;:::i;:::-;18185:53;;18303:1;18299;18294:3;18290:11;18286:19;18278:6;18274:32;18269:2;18258:9;18254:18;18247:60;17996:317;;;;;:::o;19039:168::-;19112:9;;;19143;;19160:15;;;19154:22;;19140:37;19130:71;;19181:18;;:::i;19212:217::-;19252:1;19278;19268:132;;19322:10;19317:3;19313:20;19310:1;19303:31;19357:4;19354:1;19347:15;19385:4;19382:1;19375:15;19268:132;-1:-1:-1;19414:9:138;;19212:217::o;19434:301::-;19563:3;19601:6;19595:13;19647:6;19640:4;19632:6;19628:17;19623:3;19617:37;19709:1;19673:16;;19698:13;;;-1:-1:-1;19673:16:138;19434:301;-1:-1:-1;19434:301:138:o","linkReferences":{},"immutableReferences":{"39659":[{"start":6604,"length":32},{"start":6645,"length":32},{"start":6968,"length":32}]}},"methodIdentifiers":{"COMMITMENT_ADMIN()":"80e460f0","DEFAULT_ADMIN_ROLE()":"a217fddf","TRUSTED_ATTESTER()":"5db916ab","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptGenesisCeremony()":"92a2ebf3","acceptedBlocks(uint256)":"1c4e4e27","acceptedBlocksVersion()":"747e7295","batchGrantCommitmentAdmin(address[])":"4b47d955","batchGrantTrustedAttester(address[])":"cf6772ad","blockHeightEpochAssignments(uint256)":"20e0e445","commitmentStakes(uint256,bytes32)":"fc2788ad","commitments(uint256,address)":"e90d4c06","computeAllCurrentEpochStake(address)":"60fea5dd","computeAllStakeAtEpoch(uint256,address)":"f34d002a","computeAllTotalStakeForCurrentEpoch()":"1dfcce8c","computeAllTotalStakeForEpoch(uint256)":"6542384f","createBlockCommitment(uint256,bytes32,bytes32)":"ee96da05","forceLatestCommitment((uint256,bytes32,bytes32))":"08c7050f","getAcceptedCommitmentAtBlockHeight(uint256)":"e1ffa44c","getAttesters()":"4ed7e435","getCurrentEpoch()":"b97dd9e2","getCurrentEpochStake(address,address)":"bc90afbb","getEpochByBlockTime()":"ee377d90","getMaxTolerableBlockHeight()":"74e8e564","getNextEpoch()":"efe97d05","getRoleAdmin(bytes32)":"248a9ca3","getStakeAtEpoch(uint256,address,address)":"1faea1ed","getTotalStakeForCurrentEpoch(address)":"b274a935","getTotalStakeForEpoch(uint256,address)":"c6e1b9db","getValidatorCommitmentAtBlockHeight(uint256,address)":"0a0b81cc","grantCommitmentAdmin(address)":"949d7c2a","grantRole(bytes32,address)":"2f2ff15d","grantTrustedAttester(address)":"81df1746","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address,uint256,uint256,uint256,address[])":"a3df415f","lastAcceptedBlockHeight()":"6b588ac7","leadingBlockTolerance()":"1cfa2516","openAttestationEnabled()":"ef9ae15c","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","setAcceptedCommitmentAtBlockHeight((uint256,bytes32,bytes32))":"53cd9e3c","setLastAcceptedBlockHeight(uint256)":"5a912c83","setOpenAttestationEnabled(bool)":"d2526fef","stakingContract()":"ee99205c","submitBatchBlockCommitment((uint256,bytes32,bytes32)[])":"e1b2b222","submitBlockCommitment((uint256,bytes32,bytes32))":"f89fe60b","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286","versionedAcceptedBlocks(uint256,uint256)":"e8124097"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AttesterAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnacceptableBlockCommitment\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"BlockAccepted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"attesterStake\",\"type\":\"uint256\"}],\"name\":\"BlockCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMITMENT_ADMIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_ATTESTER\",\"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\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"}],\"name\":\"acceptedBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptedBlocksVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchGrantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"}],\"name\":\"batchGrantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"}],\"name\":\"blockHeightEpochAssignments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitement\",\"type\":\"bytes32\"}],\"name\":\"commitmentStakes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"computeAllCurrentEpochStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"computeAllStakeAtEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"computeAllTotalStakeForCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"computeAllTotalStakeForEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"name\":\"createBlockCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct MCRStorage.BlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct MCRStorage.BlockCommitment\",\"name\":\"blockCommitment\",\"type\":\"tuple\"}],\"name\":\"forceLatestCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getAcceptedCommitmentAtBlockHeight\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct MCRStorage.BlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAttesters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCurrentEpochStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochByBlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxTolerableBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeAtEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getTotalStakeForCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getTotalStakeForEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getValidatorCommitmentAtBlockHeight\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct MCRStorage.BlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"grantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"_stakingContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lastAcceptedBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leadingBlockTolerance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_custodians\",\"type\":\"address[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastAcceptedBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leadingBlockTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct MCRStorage.BlockCommitment\",\"name\":\"blockCommitment\",\"type\":\"tuple\"}],\"name\":\"setAcceptedCommitmentAtBlockHeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"setLastAcceptedBlockHeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOpenAttestationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingContract\",\"outputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct MCRStorage.BlockCommitment[]\",\"name\":\"blockCommitments\",\"type\":\"tuple[]\"}],\"name\":\"submitBatchBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct MCRStorage.BlockCommitment\",\"name\":\"blockCommitment\",\"type\":\"tuple\"}],\"name\":\"submitBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"blockHeight\",\"type\":\"uint256\"}],\"name\":\"versionedAcceptedBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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.\"}},\"stateVariables\":{\"COMMITMENT_ADMIN\":{\"details\":\"The role for commitment admin \"},\"TRUSTED_ATTESTER\":{\"details\":\"The role for trusted attester \"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/settlement/MCR.sol\":\"MCR\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040\",\"dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02\",\"dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/settlement/MCR.sol\":{\"keccak256\":\"0xe8601b4143c17e7338cee38e1e6cab6d6751ef32799bb39414c01b4ef877deb5\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fbf14da0a4f769729fe9a9bc7d9a3a0be879387a78eb0a267246cc4e70e5f450\",\"dweb:/ipfs/QmQMMEZbhi4BTt3bncx4hciAiquAXUA7hrFzx79sT6UwqB\"]},\"src/settlement/MCRStorage.sol\":{\"keccak256\":\"0x2664753eee2ef587d7df00e9cb6384dc98aaebe6513f5dab4ef9d4533d023411\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://d3081e87aa2b206f44cce5c09f1d8319596d28fa3dbe1273b5f9d9316515b2d0\",\"dweb:/ipfs/Qme7SrX5f35q2GqjLiRxyYV1LwHxcjNiwE1b5MUwHNo8Zf\"]},\"src/settlement/interfaces/IMCR.sol\":{\"keccak256\":\"0xf92b9e52398d7517b384bb03c25bd6d5c9262c3a28d7419c6d3e821423756dd0\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://2a2c101cea61373fef0b4fb9df734abe359ff14317826b1d7822b5811a9f05cc\",\"dweb:/ipfs/QmdWDg4yM74CiPwBJmips5w5G16wczMEhwjsjkEk33DNPB\"]},\"src/settlement/settlement/BaseSettlement.sol\":{\"keccak256\":\"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e\",\"dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xa71627f087feb5ef56bb499624a1034769670f11acdc2160a59df9a9b8694bd3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://20de6db00ce5e3a8b4638f5c25b6fefce15f1fc356221625245d00250056347c\",\"dweb:/ipfs/QmdEodpmEbBMxLeFSB63we5fMkGzdktpwifMU7GJ6Ffwrx\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0x9ca2df17c7dec2b75cc96453c60ef64a570ae1adf429d1a92e879127616af4af\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0d53c127b022fd35429ea183b0f1882bb03a62ed4e7e8e79f7058421fe49a947\",\"dweb:/ipfs/QmUMhEebucKiE2MedG9B18vcJMozwQ8yQFwV364Lnrjjej\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x7f4fcc5c5b4a9c21775085061449a7dd6ee98ed46975c8891ccccc2670cc4587\",\"urls\":[\"bzz-raw://46a2d0689394f90426c85b4d260dc00396c4f065d6cddcd01aff8e95742ebbf5\",\"dweb:/ipfs/QmVZihDFeiz6kpo2bS6TBePkARXJPhdvwELZjYjMnnztAQ\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0x67dcaae55138dda0f6fb9cce7d00b21b1dcf48144d0442073bec83aedbd73ca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://009d22618ed30e84b0839edbe7bd1a18afe7073a62477667bf96d765428385b7\",\"dweb:/ipfs/QmNzA9RjM6SxVJYWohq7JbLvyBrhzzjzQQwBfArBQqCNAQ\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AttesterAlreadyCommitted"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnacceptableBlockCommitment"},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"height","type":"uint256","indexed":false}],"type":"event","name":"BlockAccepted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"attesterStake","type":"uint256","indexed":false}],"type":"event","name":"BlockCommitmentSubmitted","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMITMENT_ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TRUSTED_ATTESTER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"uint256","name":"blockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"acceptedBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"acceptedBlocksVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantCommitmentAdmin"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantTrustedAttester"},{"inputs":[{"internalType":"uint256","name":"blockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"blockHeightEpochAssignments","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitement","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentStakes","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"blockHeight","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"commitments","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"computeAllCurrentEpochStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"computeAllStakeAtEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"computeAllTotalStakeForCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"computeAllTotalStakeForEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"createBlockCommitment","outputs":[{"internalType":"struct MCRStorage.BlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct MCRStorage.BlockCommitment","name":"blockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"forceLatestCommitment"},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getAcceptedCommitmentAtBlockHeight","outputs":[{"internalType":"struct MCRStorage.BlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getAttesters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCurrentEpochStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochByBlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxTolerableBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNextEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeAtEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalStakeForCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalStakeForEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getValidatorCommitmentAtBlockHeight","outputs":[{"internalType":"struct MCRStorage.BlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCommitmentAdmin"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantTrustedAttester"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"contract IMovementStaking","name":"_stakingContract","type":"address"},{"internalType":"uint256","name":"_lastAcceptedBlockHeight","type":"uint256"},{"internalType":"uint256","name":"_leadingBlockTolerance","type":"uint256"},{"internalType":"uint256","name":"_epochDuration","type":"uint256"},{"internalType":"address[]","name":"_custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"lastAcceptedBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leadingBlockTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"openAttestationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"struct MCRStorage.BlockCommitment","name":"blockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"setAcceptedCommitmentAtBlockHeight"},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setLastAcceptedBlockHeight"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOpenAttestationEnabled"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingContract","outputs":[{"internalType":"contract IMovementStaking","name":"","type":"address"}]},{"inputs":[{"internalType":"struct MCRStorage.BlockCommitment[]","name":"blockCommitments","type":"tuple[]","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitBatchBlockCommitment"},{"inputs":[{"internalType":"struct MCRStorage.BlockCommitment","name":"blockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitBlockCommitment"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"blockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"versionedAcceptedBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"proxiableUUID()":{"details":"Implementation of the ERC1822 {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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/settlement/MCR.sol":"MCR"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f","urls":["bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040","dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236","urls":["bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02","dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/settlement/MCR.sol":{"keccak256":"0xe8601b4143c17e7338cee38e1e6cab6d6751ef32799bb39414c01b4ef877deb5","urls":["bzz-raw://fbf14da0a4f769729fe9a9bc7d9a3a0be879387a78eb0a267246cc4e70e5f450","dweb:/ipfs/QmQMMEZbhi4BTt3bncx4hciAiquAXUA7hrFzx79sT6UwqB"],"license":"UNLICENSED"},"src/settlement/MCRStorage.sol":{"keccak256":"0x2664753eee2ef587d7df00e9cb6384dc98aaebe6513f5dab4ef9d4533d023411","urls":["bzz-raw://d3081e87aa2b206f44cce5c09f1d8319596d28fa3dbe1273b5f9d9316515b2d0","dweb:/ipfs/Qme7SrX5f35q2GqjLiRxyYV1LwHxcjNiwE1b5MUwHNo8Zf"],"license":"UNLICENSED"},"src/settlement/interfaces/IMCR.sol":{"keccak256":"0xf92b9e52398d7517b384bb03c25bd6d5c9262c3a28d7419c6d3e821423756dd0","urls":["bzz-raw://2a2c101cea61373fef0b4fb9df734abe359ff14317826b1d7822b5811a9f05cc","dweb:/ipfs/QmdWDg4yM74CiPwBJmips5w5G16wczMEhwjsjkEk33DNPB"],"license":"UNLICENSED"},"src/settlement/settlement/BaseSettlement.sol":{"keccak256":"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a","urls":["bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e","dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xa71627f087feb5ef56bb499624a1034769670f11acdc2160a59df9a9b8694bd3","urls":["bzz-raw://20de6db00ce5e3a8b4638f5c25b6fefce15f1fc356221625245d00250056347c","dweb:/ipfs/QmdEodpmEbBMxLeFSB63we5fMkGzdktpwifMU7GJ6Ffwrx"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0x9ca2df17c7dec2b75cc96453c60ef64a570ae1adf429d1a92e879127616af4af","urls":["bzz-raw://0d53c127b022fd35429ea183b0f1882bb03a62ed4e7e8e79f7058421fe49a947","dweb:/ipfs/QmUMhEebucKiE2MedG9B18vcJMozwQ8yQFwV364Lnrjjej"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x7f4fcc5c5b4a9c21775085061449a7dd6ee98ed46975c8891ccccc2670cc4587","urls":["bzz-raw://46a2d0689394f90426c85b4d260dc00396c4f065d6cddcd01aff8e95742ebbf5","dweb:/ipfs/QmVZihDFeiz6kpo2bS6TBePkARXJPhdvwELZjYjMnnztAQ"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0x67dcaae55138dda0f6fb9cce7d00b21b1dcf48144d0442073bec83aedbd73ca6","urls":["bzz-raw://009d22618ed30e84b0839edbe7bd1a18afe7073a62477667bf96d765428385b7","dweb:/ipfs/QmNzA9RjM6SxVJYWohq7JbLvyBrhzzjzQQwBfArBQqCNAQ"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":55129,"contract":"src/settlement/MCR.sol:MCR","label":"stakingContract","offset":0,"slot":"0","type":"t_contract(IMovementStaking)56904"},{"astId":55131,"contract":"src/settlement/MCR.sol:MCR","label":"leadingBlockTolerance","offset":0,"slot":"1","type":"t_uint256"},{"astId":55133,"contract":"src/settlement/MCR.sol:MCR","label":"lastAcceptedBlockHeight","offset":0,"slot":"2","type":"t_uint256"},{"astId":55144,"contract":"src/settlement/MCR.sol:MCR","label":"blockHeightEpochAssignments","offset":0,"slot":"3","type":"t_mapping(t_uint256,t_uint256)"},{"astId":55151,"contract":"src/settlement/MCR.sol:MCR","label":"commitments","offset":0,"slot":"4","type":"t_mapping(t_uint256,t_mapping(t_address,t_struct(BlockCommitment)55140_storage))"},{"astId":55157,"contract":"src/settlement/MCR.sol:MCR","label":"commitmentStakes","offset":0,"slot":"5","type":"t_mapping(t_uint256,t_mapping(t_bytes32,t_uint256))"},{"astId":55162,"contract":"src/settlement/MCR.sol:MCR","label":"acceptedBlocks","offset":0,"slot":"6","type":"t_mapping(t_uint256,t_struct(BlockCommitment)55140_storage)"},{"astId":55164,"contract":"src/settlement/MCR.sol:MCR","label":"openAttestationEnabled","offset":0,"slot":"7","type":"t_bool"},{"astId":55171,"contract":"src/settlement/MCR.sol:MCR","label":"versionedAcceptedBlocks","offset":0,"slot":"8","type":"t_mapping(t_uint256,t_mapping(t_uint256,t_struct(BlockCommitment)55140_storage))"},{"astId":55173,"contract":"src/settlement/MCR.sol:MCR","label":"acceptedBlocksVersion","offset":0,"slot":"9","type":"t_uint256"},{"astId":55177,"contract":"src/settlement/MCR.sol:MCR","label":"__gap","offset":0,"slot":"10","type":"t_array(t_uint256)47_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)47_storage":{"encoding":"inplace","label":"uint256[47]","numberOfBytes":"1504","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(IMovementStaking)56904":{"encoding":"inplace","label":"contract IMovementStaking","numberOfBytes":"20"},"t_mapping(t_address,t_struct(BlockCommitment)55140_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct MCRStorage.BlockCommitment)","numberOfBytes":"32","value":"t_struct(BlockCommitment)55140_storage"},"t_mapping(t_bytes32,t_uint256)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_struct(BlockCommitment)55140_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => struct MCRStorage.BlockCommitment))","numberOfBytes":"32","value":"t_mapping(t_address,t_struct(BlockCommitment)55140_storage)"},"t_mapping(t_uint256,t_mapping(t_bytes32,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(bytes32 => uint256))","numberOfBytes":"32","value":"t_mapping(t_bytes32,t_uint256)"},"t_mapping(t_uint256,t_mapping(t_uint256,t_struct(BlockCommitment)55140_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(uint256 => struct MCRStorage.BlockCommitment))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_struct(BlockCommitment)55140_storage)"},"t_mapping(t_uint256,t_struct(BlockCommitment)55140_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct MCRStorage.BlockCommitment)","numberOfBytes":"32","value":"t_struct(BlockCommitment)55140_storage"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_struct(BlockCommitment)55140_storage":{"encoding":"inplace","label":"struct MCRStorage.BlockCommitment","numberOfBytes":"96","members":[{"astId":55135,"contract":"src/settlement/MCR.sol:MCR","label":"height","offset":0,"slot":"0","type":"t_uint256"},{"astId":55137,"contract":"src/settlement/MCR.sol:MCR","label":"commitment","offset":0,"slot":"1","type":"t_bytes32"},{"astId":55139,"contract":"src/settlement/MCR.sol:MCR","label":"blockId","offset":0,"slot":"2","type":"t_bytes32"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/settlement/MCR.sol","id":55119,"exportedSymbols":{"BaseSettlement":[55256],"EnumerableSet":[47007],"IMCR":[55201],"IMovementStaking":[56904],"Initializable":[39639],"MCR":[55118],"MCRStorage":[55178],"MovementStaking":[56550],"ReentrancyGuard":[44412],"console":[24306]},"nodeType":"SourceUnit","src":"39:15253:105","nodes":[{"id":54160,"nodeType":"PragmaDirective","src":"39:24:105","nodes":[],"literals":["solidity","^","0.8",".13"]},{"id":54162,"nodeType":"ImportDirective","src":"65:86:105","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol","file":"@openzeppelin/contracts/utils/structs/EnumerableSet.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":47008,"symbolAliases":[{"foreign":{"id":54161,"name":"EnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47007,"src":"73:13:105","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54164,"nodeType":"ImportDirective","src":"152:96:105","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":39640,"symbolAliases":[{"foreign":{"id":54163,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39639,"src":"160:13:105","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54165,"nodeType":"ImportDirective","src":"249:31:105","nodes":[],"absolutePath":"lib/forge-std/src/console.sol","file":"forge-std/console.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":24307,"symbolAliases":[],"unitAlias":""},{"id":54168,"nodeType":"ImportDirective","src":"281:81:105","nodes":[],"absolutePath":"src/staking/MovementStaking.sol","file":"../staking/MovementStaking.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":56551,"symbolAliases":[{"foreign":{"id":54166,"name":"MovementStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56550,"src":"289:15:105","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":54167,"name":"IMovementStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56904,"src":"306:16:105","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54170,"nodeType":"ImportDirective","src":"363:44:105","nodes":[],"absolutePath":"src/settlement/MCRStorage.sol","file":"./MCRStorage.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":55179,"symbolAliases":[{"foreign":{"id":54169,"name":"MCRStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55178,"src":"371:10:105","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54172,"nodeType":"ImportDirective","src":"408:63:105","nodes":[],"absolutePath":"src/settlement/settlement/BaseSettlement.sol","file":"./settlement/BaseSettlement.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":55257,"symbolAliases":[{"foreign":{"id":54171,"name":"BaseSettlement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55256,"src":"416:14:105","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54174,"nodeType":"ImportDirective","src":"472:43:105","nodes":[],"absolutePath":"src/settlement/interfaces/IMCR.sol","file":"./interfaces/IMCR.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":55202,"symbolAliases":[{"foreign":{"id":54173,"name":"IMCR","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55201,"src":"480:4:105","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":54175,"nodeType":"ImportDirective","src":"516:59:105","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","nameLocation":"-1:-1:-1","scope":55119,"sourceUnit":44413,"symbolAliases":[],"unitAlias":""},{"id":55118,"nodeType":"ContractDefinition","src":"577:14714:105","nodes":[{"id":54189,"nodeType":"VariableDeclaration","src":"694:72:105","nodes":[],"constant":true,"documentation":{"id":54184,"nodeType":"StructuredDocumentation","src":"648:41:105","text":"@dev The role for commitment admin "},"functionSelector":"80e460f0","mutability":"constant","name":"COMMITMENT_ADMIN","nameLocation":"718:16:105","scope":55118,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54185,"name":"bytes32","nodeType":"ElementaryTypeName","src":"694:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"434f4d4d49544d454e545f41444d494e","id":54187,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"747:18:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_db2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c","typeString":"literal_string \"COMMITMENT_ADMIN\""},"value":"COMMITMENT_ADMIN"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c","typeString":"literal_string \"COMMITMENT_ADMIN\""}],"id":54186,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"737:9:105","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54188,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"737:29:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":54195,"nodeType":"VariableDeclaration","src":"819:72:105","nodes":[],"constant":true,"documentation":{"id":54190,"nodeType":"StructuredDocumentation","src":"773:41:105","text":"@dev The role for trusted attester "},"functionSelector":"5db916ab","mutability":"constant","name":"TRUSTED_ATTESTER","nameLocation":"843:16:105","scope":55118,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54191,"name":"bytes32","nodeType":"ElementaryTypeName","src":"819:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"545255535445445f4154544553544552","id":54193,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"872:18:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18","typeString":"literal_string \"TRUSTED_ATTESTER\""},"value":"TRUSTED_ATTESTER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18","typeString":"literal_string \"TRUSTED_ATTESTER\""}],"id":54192,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"862:9:105","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":54194,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"862:29:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":54245,"nodeType":"FunctionDefinition","src":"898:603:105","nodes":[],"body":{"id":54244,"nodeType":"Block","src":"1138:363:105","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54212,"name":"__BaseSettlement_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55244,"src":"1148:31:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1148:33:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54214,"nodeType":"ExpressionStatement","src":"1148:33:105"},{"expression":{"id":54217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54215,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"1191:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54216,"name":"_stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54198,"src":"1209:16:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"src":"1191:34:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54218,"nodeType":"ExpressionStatement","src":"1191:34:105"},{"expression":{"id":54221,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54219,"name":"leadingBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55131,"src":"1235:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54220,"name":"_leadingBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54202,"src":"1259:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1235:46:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54222,"nodeType":"ExpressionStatement","src":"1235:46:105"},{"expression":{"id":54225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54223,"name":"lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55133,"src":"1291:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54224,"name":"_lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54200,"src":"1317:24:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1291:50:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54226,"nodeType":"ExpressionStatement","src":"1291:50:105"},{"expression":{"arguments":[{"id":54230,"name":"_epochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54204,"src":"1382:14:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":54231,"name":"_custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54207,"src":"1398:11:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"id":54227,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"1351:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54229,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1367:14:105","memberName":"registerDomain","nodeType":"MemberAccess","referencedDeclaration":56693,"src":"1351:30:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,address[] memory) external"}},"id":54232,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1351:59:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54233,"nodeType":"ExpressionStatement","src":"1351:59:105"},{"expression":{"arguments":[{"expression":{"id":54235,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1441:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54236,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1445:6:105","memberName":"sender","nodeType":"MemberAccess","src":"1441:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54234,"name":"grantCommitmentAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54280,"src":"1420:20:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":54237,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1420:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54238,"nodeType":"ExpressionStatement","src":"1420:32:105"},{"expression":{"arguments":[{"expression":{"id":54240,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1483:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1487:6:105","memberName":"sender","nodeType":"MemberAccess","src":"1483:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54239,"name":"grantTrustedAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54934,"src":"1462:20:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":54242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1462:32:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54243,"nodeType":"ExpressionStatement","src":"1462:32:105"}]},"functionSelector":"a3df415f","implemented":true,"kind":"function","modifiers":[{"id":54210,"kind":"modifierInvocation","modifierName":{"id":54209,"name":"initializer","nameLocations":["1126:11:105"],"nodeType":"IdentifierPath","referencedDeclaration":39493,"src":"1126:11:105"},"nodeType":"ModifierInvocation","src":"1126:11:105"}],"name":"initialize","nameLocation":"907:10:105","parameters":{"id":54208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54198,"mutability":"mutable","name":"_stakingContract","nameLocation":"944:16:105","nodeType":"VariableDeclaration","scope":54245,"src":"927:33:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"},"typeName":{"id":54197,"nodeType":"UserDefinedTypeName","pathNode":{"id":54196,"name":"IMovementStaking","nameLocations":["927:16:105"],"nodeType":"IdentifierPath","referencedDeclaration":56904,"src":"927:16:105"},"referencedDeclaration":56904,"src":"927:16:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"visibility":"internal"},{"constant":false,"id":54200,"mutability":"mutable","name":"_lastAcceptedBlockHeight","nameLocation":"978:24:105","nodeType":"VariableDeclaration","scope":54245,"src":"970:32:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54199,"name":"uint256","nodeType":"ElementaryTypeName","src":"970:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54202,"mutability":"mutable","name":"_leadingBlockTolerance","nameLocation":"1020:22:105","nodeType":"VariableDeclaration","scope":54245,"src":"1012:30:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54201,"name":"uint256","nodeType":"ElementaryTypeName","src":"1012:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54204,"mutability":"mutable","name":"_epochDuration","nameLocation":"1060:14:105","nodeType":"VariableDeclaration","scope":54245,"src":"1052:22:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54203,"name":"uint256","nodeType":"ElementaryTypeName","src":"1052:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54207,"mutability":"mutable","name":"_custodians","nameLocation":"1101:11:105","nodeType":"VariableDeclaration","scope":54245,"src":"1084:28:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54205,"name":"address","nodeType":"ElementaryTypeName","src":"1084:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54206,"nodeType":"ArrayTypeName","src":"1084:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"917:201:105"},"returnParameters":{"id":54211,"nodeType":"ParameterList","parameters":[],"src":"1138:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54280,"nodeType":"FunctionDefinition","src":"1507:372:105","nodes":[],"body":{"id":54279,"nodeType":"Block","src":"1561:318:105","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"6772616e74436f6d6d69746d656e7441646d696e2063616c6c65642062793a","id":54253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1583:33:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_ae7e22d26b9b1fdb586cb09459474c6b49b521d7905bf5005772d8818fba9722","typeString":"literal_string \"grantCommitmentAdmin called by:\""},"value":"grantCommitmentAdmin called by:"},{"expression":{"id":54254,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1618:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54255,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1622:6:105","memberName":"sender","nodeType":"MemberAccess","src":"1618:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ae7e22d26b9b1fdb586cb09459474c6b49b521d7905bf5005772d8818fba9722","typeString":"literal_string \"grantCommitmentAdmin called by:\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54250,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24306,"src":"1571:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$24306_$","typeString":"type(library console)"}},"id":54252,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1579:3:105","memberName":"log","nodeType":"MemberAccess","referencedDeclaration":17001,"src":"1571:11:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":54256,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1571:58:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54257,"nodeType":"ExpressionStatement","src":"1571:58:105"},{"expression":{"arguments":[{"arguments":[{"id":54260,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39051,"src":"1668:18:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54261,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1688:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54262,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1692:6:105","memberName":"sender","nodeType":"MemberAccess","src":"1688:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54259,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"1660:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":54263,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1660:39:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e4c59","id":54264,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1713:36:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""},"value":"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""}],"id":54258,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1639:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54265,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1639:120:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54266,"nodeType":"ExpressionStatement","src":"1639:120:105"},{"expression":{"arguments":[{"id":54268,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"1779:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54269,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54247,"src":"1797:7:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54267,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39213,"src":"1769:9:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":54270,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1769:36:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54271,"nodeType":"ExpressionStatement","src":"1769:36:105"},{"expression":{"arguments":[{"hexValue":"436f6d6d69746d656e7441646d696e20726f6c65206772616e74656420746f3a","id":54275,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1827:34:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_b259a0a1dd742be4ea3b57db2892b7e6dee6f41d9e3a0bca2480431e42462396","typeString":"literal_string \"CommitmentAdmin role granted to:\""},"value":"CommitmentAdmin role granted to:"},{"id":54276,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54247,"src":"1863:7:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b259a0a1dd742be4ea3b57db2892b7e6dee6f41d9e3a0bca2480431e42462396","typeString":"literal_string \"CommitmentAdmin role granted to:\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54272,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24306,"src":"1815:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$24306_$","typeString":"type(library console)"}},"id":54274,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1823:3:105","memberName":"log","nodeType":"MemberAccess","referencedDeclaration":17001,"src":"1815:11:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":54277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1815:56:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54278,"nodeType":"ExpressionStatement","src":"1815:56:105"}]},"functionSelector":"949d7c2a","implemented":true,"kind":"function","modifiers":[],"name":"grantCommitmentAdmin","nameLocation":"1516:20:105","parameters":{"id":54248,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54247,"mutability":"mutable","name":"account","nameLocation":"1545:7:105","nodeType":"VariableDeclaration","scope":54280,"src":"1537:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54246,"name":"address","nodeType":"ElementaryTypeName","src":"1537:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1536:17:105"},"returnParameters":{"id":54249,"nodeType":"ParameterList","parameters":[],"src":"1561:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54316,"nodeType":"FunctionDefinition","src":"1885:326:105","nodes":[],"body":{"id":54315,"nodeType":"Block","src":"1954:257:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54288,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39051,"src":"1993:18:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54289,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2013:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54290,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2017:6:105","memberName":"sender","nodeType":"MemberAccess","src":"2013:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54287,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"1985:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":54291,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1985:39:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e4c59","id":54292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2038:36:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""},"value":"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""}],"id":54286,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1964:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54293,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1964:120:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54294,"nodeType":"ExpressionStatement","src":"1964:120:105"},{"body":{"id":54313,"nodeType":"Block","src":"2140:65:105","statements":[{"expression":{"arguments":[{"id":54307,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"2164:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":54308,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54283,"src":"2182:8:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54310,"indexExpression":{"id":54309,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54296,"src":"2191:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2182:11:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54306,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39213,"src":"2154:9:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":54311,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:40:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54312,"nodeType":"ExpressionStatement","src":"2154:40:105"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54302,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54299,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54296,"src":"2114:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54300,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54283,"src":"2118:8:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54301,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2127:6:105","memberName":"length","nodeType":"MemberAccess","src":"2118:15:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2114:19:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54314,"initializationExpression":{"assignments":[54296],"declarations":[{"constant":false,"id":54296,"mutability":"mutable","name":"i","nameLocation":"2107:1:105","nodeType":"VariableDeclaration","scope":54314,"src":"2099:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54295,"name":"uint256","nodeType":"ElementaryTypeName","src":"2099:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54298,"initialValue":{"hexValue":"30","id":54297,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2111:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2099:13:105"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":54304,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2135:3:105","subExpression":{"id":54303,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54296,"src":"2135:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54305,"nodeType":"ExpressionStatement","src":"2135:3:105"},"nodeType":"ForStatement","src":"2094:111:105"}]},"functionSelector":"4b47d955","implemented":true,"kind":"function","modifiers":[],"name":"batchGrantCommitmentAdmin","nameLocation":"1894:25:105","parameters":{"id":54284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54283,"mutability":"mutable","name":"accounts","nameLocation":"1937:8:105","nodeType":"VariableDeclaration","scope":54316,"src":"1920:25:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54281,"name":"address","nodeType":"ElementaryTypeName","src":"1920:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54282,"nodeType":"ArrayTypeName","src":"1920:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1919:27:105"},"returnParameters":{"id":54285,"nodeType":"ParameterList","parameters":[],"src":"1954:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54335,"nodeType":"FunctionDefinition","src":"2245:227:105","nodes":[],"body":{"id":54334,"nodeType":"Block","src":"2404:68:105","nodes":[],"statements":[{"expression":{"arguments":[{"id":54329,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54318,"src":"2437:6:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":54330,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54320,"src":"2445:10:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54331,"name":"blockId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54322,"src":"2457:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":54328,"name":"BlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55140,"src":"2421:15:105","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_BlockCommitment_$55140_storage_ptr_$","typeString":"type(struct MCRStorage.BlockCommitment storage pointer)"}},"id":54332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2421:44:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"functionReturnParameters":54327,"id":54333,"nodeType":"Return","src":"2414:51:105"}]},"functionSelector":"ee96da05","implemented":true,"kind":"function","modifiers":[],"name":"createBlockCommitment","nameLocation":"2254:21:105","parameters":{"id":54323,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54318,"mutability":"mutable","name":"height","nameLocation":"2293:6:105","nodeType":"VariableDeclaration","scope":54335,"src":"2285:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54317,"name":"uint256","nodeType":"ElementaryTypeName","src":"2285:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54320,"mutability":"mutable","name":"commitment","nameLocation":"2317:10:105","nodeType":"VariableDeclaration","scope":54335,"src":"2309:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54319,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2309:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":54322,"mutability":"mutable","name":"blockId","nameLocation":"2345:7:105","nodeType":"VariableDeclaration","scope":54335,"src":"2337:15:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":54321,"name":"bytes32","nodeType":"ElementaryTypeName","src":"2337:7:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"2275:83:105"},"returnParameters":{"id":54327,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54326,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54335,"src":"2380:22:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54325,"nodeType":"UserDefinedTypeName","pathNode":{"id":54324,"name":"BlockCommitment","nameLocations":["2380:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"2380:15:105"},"referencedDeclaration":55140,"src":"2380:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"2379:24:105"},"scope":55118,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":54345,"nodeType":"FunctionDefinition","src":"2521:139:105","nodes":[],"body":{"id":54344,"nodeType":"Block","src":"2589:71:105","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54340,"name":"lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55133,"src":"2606:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54341,"name":"leadingBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55131,"src":"2632:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2606:47:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54339,"id":54343,"nodeType":"Return","src":"2599:54:105"}]},"functionSelector":"74e8e564","implemented":true,"kind":"function","modifiers":[],"name":"getMaxTolerableBlockHeight","nameLocation":"2530:26:105","parameters":{"id":54336,"nodeType":"ParameterList","parameters":[],"src":"2556:2:105"},"returnParameters":{"id":54339,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54338,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54345,"src":"2580:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54337,"name":"uint256","nodeType":"ElementaryTypeName","src":"2580:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2579:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54359,"nodeType":"FunctionDefinition","src":"2724:135:105","nodes":[],"body":{"id":54358,"nodeType":"Block","src":"2785:74:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54354,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2846:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2838:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54352,"name":"address","nodeType":"ElementaryTypeName","src":"2838:7:105","typeDescriptions":{}}},"id":54355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2838:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54350,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"2802:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2818:19:105","memberName":"getEpochByBlockTime","nodeType":"MemberAccess","referencedDeclaration":56703,"src":"2802:35:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":54356,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2802:50:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54349,"id":54357,"nodeType":"Return","src":"2795:57:105"}]},"functionSelector":"ee377d90","implemented":true,"kind":"function","modifiers":[],"name":"getEpochByBlockTime","nameLocation":"2733:19:105","parameters":{"id":54346,"nodeType":"ParameterList","parameters":[],"src":"2752:2:105"},"returnParameters":{"id":54349,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54348,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54359,"src":"2776:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54347,"name":"uint256","nodeType":"ElementaryTypeName","src":"2776:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2775:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54373,"nodeType":"FunctionDefinition","src":"2933:127:105","nodes":[],"body":{"id":54372,"nodeType":"Block","src":"2990:70:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54368,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3047:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54367,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3039:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54366,"name":"address","nodeType":"ElementaryTypeName","src":"3039:7:105","typeDescriptions":{}}},"id":54369,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3039:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54364,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"3007:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3023:15:105","memberName":"getCurrentEpoch","nodeType":"MemberAccess","referencedDeclaration":56710,"src":"3007:31:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":54370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3007:46:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54363,"id":54371,"nodeType":"Return","src":"3000:53:105"}]},"functionSelector":"b97dd9e2","implemented":true,"kind":"function","modifiers":[],"name":"getCurrentEpoch","nameLocation":"2942:15:105","parameters":{"id":54360,"nodeType":"ParameterList","parameters":[],"src":"2957:2:105"},"returnParameters":{"id":54363,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54362,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54373,"src":"2981:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54361,"name":"uint256","nodeType":"ElementaryTypeName","src":"2981:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2980:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54387,"nodeType":"FunctionDefinition","src":"3093:121:105","nodes":[],"body":{"id":54386,"nodeType":"Block","src":"3147:67:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54382,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3201:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54381,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3193:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54380,"name":"address","nodeType":"ElementaryTypeName","src":"3193:7:105","typeDescriptions":{}}},"id":54383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3193:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54378,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"3164:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3180:12:105","memberName":"getNextEpoch","nodeType":"MemberAccess","referencedDeclaration":56717,"src":"3164:28:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":54384,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3164:43:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54377,"id":54385,"nodeType":"Return","src":"3157:50:105"}]},"functionSelector":"efe97d05","implemented":true,"kind":"function","modifiers":[],"name":"getNextEpoch","nameLocation":"3102:12:105","parameters":{"id":54374,"nodeType":"ParameterList","parameters":[],"src":"3114:2:105"},"returnParameters":{"id":54377,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54376,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54387,"src":"3138:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54375,"name":"uint256","nodeType":"ElementaryTypeName","src":"3138:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3137:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54410,"nodeType":"FunctionDefinition","src":"3280:325:105","nodes":[],"body":{"id":54409,"nodeType":"Block","src":"3417:188:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54402,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3503:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3495:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54400,"name":"address","nodeType":"ElementaryTypeName","src":"3495:7:105","typeDescriptions":{}}},"id":54403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3495:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54404,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54389,"src":"3526:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":54405,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54391,"src":"3549:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54406,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54393,"src":"3576:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54398,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"3446:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54399,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3462:15:105","memberName":"getStakeAtEpoch","nodeType":"MemberAccess","referencedDeclaration":56737,"src":"3446:31:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view external returns (uint256)"}},"id":54407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3446:152:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54397,"id":54408,"nodeType":"Return","src":"3427:171:105"}]},"functionSelector":"1faea1ed","implemented":true,"kind":"function","modifiers":[],"name":"getStakeAtEpoch","nameLocation":"3289:15:105","parameters":{"id":54394,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54389,"mutability":"mutable","name":"epoch","nameLocation":"3322:5:105","nodeType":"VariableDeclaration","scope":54410,"src":"3314:13:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54388,"name":"uint256","nodeType":"ElementaryTypeName","src":"3314:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54391,"mutability":"mutable","name":"custodian","nameLocation":"3345:9:105","nodeType":"VariableDeclaration","scope":54410,"src":"3337:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54390,"name":"address","nodeType":"ElementaryTypeName","src":"3337:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54393,"mutability":"mutable","name":"attester","nameLocation":"3372:8:105","nodeType":"VariableDeclaration","scope":54410,"src":"3364:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54392,"name":"address","nodeType":"ElementaryTypeName","src":"3364:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3304:82:105"},"returnParameters":{"id":54397,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54396,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54410,"src":"3408:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54395,"name":"uint256","nodeType":"ElementaryTypeName","src":"3408:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3407:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54462,"nodeType":"FunctionDefinition","src":"3637:495:105","nodes":[],"body":{"id":54461,"nodeType":"Block","src":"3754:378:105","nodes":[],"statements":[{"assignments":[54423],"declarations":[{"constant":false,"id":54423,"mutability":"mutable","name":"custodians","nameLocation":"3781:10:105","nodeType":"VariableDeclaration","scope":54461,"src":"3764:27:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54421,"name":"address","nodeType":"ElementaryTypeName","src":"3764:7:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54422,"nodeType":"ArrayTypeName","src":"3764:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":54431,"initialValue":{"arguments":[{"arguments":[{"id":54428,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"3853:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54427,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"3845:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54426,"name":"address","nodeType":"ElementaryTypeName","src":"3845:7:105","typeDescriptions":{}}},"id":54429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3845:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54424,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"3794:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3810:21:105","memberName":"getCustodiansByDomain","nodeType":"MemberAccess","referencedDeclaration":56819,"src":"3794:37:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":54430,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3794:74:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3764:104:105"},{"assignments":[54433],"declarations":[{"constant":false,"id":54433,"mutability":"mutable","name":"totalStake","nameLocation":"3886:10:105","nodeType":"VariableDeclaration","scope":54461,"src":"3878:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54432,"name":"uint256","nodeType":"ElementaryTypeName","src":"3878:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54435,"initialValue":{"hexValue":"30","id":54434,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3899:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3878:22:105"},{"body":{"id":54457,"nodeType":"Block","src":"3958:141:105","statements":[{"expression":{"id":54455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54447,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54433,"src":"4027:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":54449,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54412,"src":"4057:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":54450,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54423,"src":"4064:10:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54452,"indexExpression":{"id":54451,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54437,"src":"4075:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4064:13:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54453,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54414,"src":"4079:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54448,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54410,"src":"4041:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":54454,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4041:47:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4027:61:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54456,"nodeType":"ExpressionStatement","src":"4027:61:105"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54443,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54440,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54437,"src":"3930:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54441,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54423,"src":"3934:10:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3945:6:105","memberName":"length","nodeType":"MemberAccess","src":"3934:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3930:21:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54458,"initializationExpression":{"assignments":[54437],"declarations":[{"constant":false,"id":54437,"mutability":"mutable","name":"i","nameLocation":"3923:1:105","nodeType":"VariableDeclaration","scope":54458,"src":"3915:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54436,"name":"uint256","nodeType":"ElementaryTypeName","src":"3915:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54439,"initialValue":{"hexValue":"30","id":54438,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3927:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3915:13:105"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":54445,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3953:3:105","subExpression":{"id":54444,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54437,"src":"3953:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54446,"nodeType":"ExpressionStatement","src":"3953:3:105"},"nodeType":"ForStatement","src":"3910:189:105"},{"expression":{"id":54459,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54433,"src":"4115:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54418,"id":54460,"nodeType":"Return","src":"4108:17:105"}]},"functionSelector":"f34d002a","implemented":true,"kind":"function","modifiers":[],"name":"computeAllStakeAtEpoch","nameLocation":"3646:22:105","parameters":{"id":54415,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54412,"mutability":"mutable","name":"epoch","nameLocation":"3686:5:105","nodeType":"VariableDeclaration","scope":54462,"src":"3678:13:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54411,"name":"uint256","nodeType":"ElementaryTypeName","src":"3678:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54414,"mutability":"mutable","name":"attester","nameLocation":"3709:8:105","nodeType":"VariableDeclaration","scope":54462,"src":"3701:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54413,"name":"address","nodeType":"ElementaryTypeName","src":"3701:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3668:55:105"},"returnParameters":{"id":54418,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54417,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54462,"src":"3745:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54416,"name":"uint256","nodeType":"ElementaryTypeName","src":"3745:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3744:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54479,"nodeType":"FunctionDefinition","src":"4202:198:105","nodes":[],"body":{"id":54478,"nodeType":"Block","src":"4321:79:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54472,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54373,"src":"4354:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54473,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4354:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":54474,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54464,"src":"4373:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54475,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54466,"src":"4384:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54471,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54410,"src":"4338:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":54476,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4338:55:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54470,"id":54477,"nodeType":"Return","src":"4331:62:105"}]},"functionSelector":"bc90afbb","implemented":true,"kind":"function","modifiers":[],"name":"getCurrentEpochStake","nameLocation":"4211:20:105","parameters":{"id":54467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54464,"mutability":"mutable","name":"custodian","nameLocation":"4249:9:105","nodeType":"VariableDeclaration","scope":54479,"src":"4241:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54463,"name":"address","nodeType":"ElementaryTypeName","src":"4241:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54466,"mutability":"mutable","name":"attester","nameLocation":"4276:8:105","nodeType":"VariableDeclaration","scope":54479,"src":"4268:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54465,"name":"address","nodeType":"ElementaryTypeName","src":"4268:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4231:59:105"},"returnParameters":{"id":54470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54469,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54479,"src":"4312:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54468,"name":"uint256","nodeType":"ElementaryTypeName","src":"4312:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4311:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54493,"nodeType":"FunctionDefinition","src":"4406:174:105","nodes":[],"body":{"id":54492,"nodeType":"Block","src":"4505:75:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54487,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54373,"src":"4545:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54488,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4545:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":54489,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54481,"src":"4564:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54486,"name":"computeAllStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54462,"src":"4522:22:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":54490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4522:51:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54485,"id":54491,"nodeType":"Return","src":"4515:58:105"}]},"functionSelector":"60fea5dd","implemented":true,"kind":"function","modifiers":[],"name":"computeAllCurrentEpochStake","nameLocation":"4415:27:105","parameters":{"id":54482,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54481,"mutability":"mutable","name":"attester","nameLocation":"4460:8:105","nodeType":"VariableDeclaration","scope":54493,"src":"4452:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54480,"name":"address","nodeType":"ElementaryTypeName","src":"4452:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4442:32:105"},"returnParameters":{"id":54485,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54484,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54493,"src":"4496:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54483,"name":"uint256","nodeType":"ElementaryTypeName","src":"4496:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4495:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54513,"nodeType":"FunctionDefinition","src":"4632:285:105","nodes":[],"body":{"id":54512,"nodeType":"Block","src":"4749:168:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54506,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"4841:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54505,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4833:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54504,"name":"address","nodeType":"ElementaryTypeName","src":"4833:7:105","typeDescriptions":{}}},"id":54507,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4833:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54508,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54495,"src":"4864:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":54509,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54497,"src":"4887:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54502,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"4778:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4794:21:105","memberName":"getTotalStakeForEpoch","nodeType":"MemberAccess","referencedDeclaration":56783,"src":"4778:37:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) view external returns (uint256)"}},"id":54510,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4778:132:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54501,"id":54511,"nodeType":"Return","src":"4759:151:105"}]},"functionSelector":"c6e1b9db","implemented":true,"kind":"function","modifiers":[],"name":"getTotalStakeForEpoch","nameLocation":"4641:21:105","parameters":{"id":54498,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54495,"mutability":"mutable","name":"epoch","nameLocation":"4680:5:105","nodeType":"VariableDeclaration","scope":54513,"src":"4672:13:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54494,"name":"uint256","nodeType":"ElementaryTypeName","src":"4672:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54497,"mutability":"mutable","name":"custodian","nameLocation":"4703:9:105","nodeType":"VariableDeclaration","scope":54513,"src":"4695:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54496,"name":"address","nodeType":"ElementaryTypeName","src":"4695:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4662:56:105"},"returnParameters":{"id":54501,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54500,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54513,"src":"4740:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54499,"name":"uint256","nodeType":"ElementaryTypeName","src":"4740:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4739:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54531,"nodeType":"FunctionDefinition","src":"4923:229:105","nodes":[],"body":{"id":54530,"nodeType":"Block","src":"4963:189:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54518,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39051,"src":"5002:18:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54519,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5022:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54520,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5026:6:105","memberName":"sender","nodeType":"MemberAccess","src":"5022:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54517,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"4994:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":54521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4994:39:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e5f4f4e4c59","id":54522,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5047:39:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_b077b31285a16307062fcb4fde0e57e8246ea6dc3cdd1c5dd5880d32a26fbf54","typeString":"literal_string \"ACCEPT_GENESIS_CEREMONY_IS_ADMIN_ONLY\""},"value":"ACCEPT_GENESIS_CEREMONY_IS_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b077b31285a16307062fcb4fde0e57e8246ea6dc3cdd1c5dd5880d32a26fbf54","typeString":"literal_string \"ACCEPT_GENESIS_CEREMONY_IS_ADMIN_ONLY\""}],"id":54516,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4973:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4973:123:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54524,"nodeType":"ExpressionStatement","src":"4973:123:105"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":54525,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"5106:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5122:21:105","memberName":"acceptGenesisCeremony","nodeType":"MemberAccess","referencedDeclaration":56696,"src":"5106:37:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":54528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5106:39:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54529,"nodeType":"ExpressionStatement","src":"5106:39:105"}]},"functionSelector":"92a2ebf3","implemented":true,"kind":"function","modifiers":[],"name":"acceptGenesisCeremony","nameLocation":"4932:21:105","parameters":{"id":54514,"nodeType":"ParameterList","parameters":[],"src":"4953:2:105"},"returnParameters":{"id":54515,"nodeType":"ParameterList","parameters":[],"src":"4963:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54580,"nodeType":"FunctionDefinition","src":"5158:471:105","nodes":[],"body":{"id":54579,"nodeType":"Block","src":"5255:374:105","nodes":[],"statements":[{"assignments":[54542],"declarations":[{"constant":false,"id":54542,"mutability":"mutable","name":"custodians","nameLocation":"5282:10:105","nodeType":"VariableDeclaration","scope":54579,"src":"5265:27:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54540,"name":"address","nodeType":"ElementaryTypeName","src":"5265:7:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54541,"nodeType":"ArrayTypeName","src":"5265:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":54550,"initialValue":{"arguments":[{"arguments":[{"id":54547,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5354:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54546,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5346:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54545,"name":"address","nodeType":"ElementaryTypeName","src":"5346:7:105","typeDescriptions":{}}},"id":54548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5346:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54543,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"5295:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54544,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5311:21:105","memberName":"getCustodiansByDomain","nodeType":"MemberAccess","referencedDeclaration":56819,"src":"5295:37:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":54549,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5295:74:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"5265:104:105"},{"assignments":[54552],"declarations":[{"constant":false,"id":54552,"mutability":"mutable","name":"totalStake","nameLocation":"5387:10:105","nodeType":"VariableDeclaration","scope":54579,"src":"5379:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54551,"name":"uint256","nodeType":"ElementaryTypeName","src":"5379:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54554,"initialValue":{"hexValue":"30","id":54553,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5400:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5379:22:105"},{"body":{"id":54575,"nodeType":"Block","src":"5459:137:105","statements":[{"expression":{"id":54573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54566,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54552,"src":"5528:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":54568,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54533,"src":"5564:5:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":54569,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54542,"src":"5571:10:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54571,"indexExpression":{"id":54570,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54556,"src":"5582:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5571:13:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54567,"name":"getTotalStakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54513,"src":"5542:21:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":54572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5542:43:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5528:57:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54574,"nodeType":"ExpressionStatement","src":"5528:57:105"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54559,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54556,"src":"5431:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54560,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54542,"src":"5435:10:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54561,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5446:6:105","memberName":"length","nodeType":"MemberAccess","src":"5435:17:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5431:21:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54576,"initializationExpression":{"assignments":[54556],"declarations":[{"constant":false,"id":54556,"mutability":"mutable","name":"i","nameLocation":"5424:1:105","nodeType":"VariableDeclaration","scope":54576,"src":"5416:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54555,"name":"uint256","nodeType":"ElementaryTypeName","src":"5416:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54558,"initialValue":{"hexValue":"30","id":54557,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5428:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5416:13:105"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":54564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5454:3:105","subExpression":{"id":54563,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54556,"src":"5454:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54565,"nodeType":"ExpressionStatement","src":"5454:3:105"},"nodeType":"ForStatement","src":"5411:185:105"},{"expression":{"id":54577,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54552,"src":"5612:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54537,"id":54578,"nodeType":"Return","src":"5605:17:105"}]},"functionSelector":"6542384f","implemented":true,"kind":"function","modifiers":[],"name":"computeAllTotalStakeForEpoch","nameLocation":"5167:28:105","parameters":{"id":54534,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54533,"mutability":"mutable","name":"epoch","nameLocation":"5213:5:105","nodeType":"VariableDeclaration","scope":54580,"src":"5205:13:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54532,"name":"uint256","nodeType":"ElementaryTypeName","src":"5205:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5195:29:105"},"returnParameters":{"id":54537,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54536,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54580,"src":"5246:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54535,"name":"uint256","nodeType":"ElementaryTypeName","src":"5246:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5245:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54594,"nodeType":"FunctionDefinition","src":"5685:176:105","nodes":[],"body":{"id":54593,"nodeType":"Block","src":"5786:75:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54588,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54373,"src":"5825:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5825:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":54590,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54582,"src":"5844:9:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54587,"name":"getTotalStakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54513,"src":"5803:21:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":54591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5803:51:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54586,"id":54592,"nodeType":"Return","src":"5796:58:105"}]},"functionSelector":"b274a935","implemented":true,"kind":"function","modifiers":[],"name":"getTotalStakeForCurrentEpoch","nameLocation":"5694:28:105","parameters":{"id":54583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54582,"mutability":"mutable","name":"custodian","nameLocation":"5740:9:105","nodeType":"VariableDeclaration","scope":54594,"src":"5732:17:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54581,"name":"address","nodeType":"ElementaryTypeName","src":"5732:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5722:33:105"},"returnParameters":{"id":54586,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54585,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54594,"src":"5777:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54584,"name":"uint256","nodeType":"ElementaryTypeName","src":"5777:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5776:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54605,"nodeType":"FunctionDefinition","src":"5867:176:105","nodes":[],"body":{"id":54604,"nodeType":"Block","src":"5972:71:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":54600,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54373,"src":"6018:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54601,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6018:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54599,"name":"computeAllTotalStakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54580,"src":"5989:28:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":54602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5989:47:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":54598,"id":54603,"nodeType":"Return","src":"5982:54:105"}]},"functionSelector":"1dfcce8c","implemented":true,"kind":"function","modifiers":[],"name":"computeAllTotalStakeForCurrentEpoch","nameLocation":"5876:35:105","parameters":{"id":54595,"nodeType":"ParameterList","parameters":[],"src":"5911:2:105"},"returnParameters":{"id":54598,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54597,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54605,"src":"5959:7:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54596,"name":"uint256","nodeType":"ElementaryTypeName","src":"5959:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5958:9:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54622,"nodeType":"FunctionDefinition","src":"6049:199:105","nodes":[],"body":{"id":54621,"nodeType":"Block","src":"6195:53:105","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":54615,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55151,"src":"6212:11:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct MCRStorage.BlockCommitment storage ref))"}},"id":54617,"indexExpression":{"id":54616,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54607,"src":"6224:6:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6212:19:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(address => struct MCRStorage.BlockCommitment storage ref)"}},"id":54619,"indexExpression":{"id":54618,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54609,"src":"6232:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6212:29:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"functionReturnParameters":54614,"id":54620,"nodeType":"Return","src":"6205:36:105"}]},"functionSelector":"0a0b81cc","implemented":true,"kind":"function","modifiers":[],"name":"getValidatorCommitmentAtBlockHeight","nameLocation":"6058:35:105","parameters":{"id":54610,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54607,"mutability":"mutable","name":"height","nameLocation":"6111:6:105","nodeType":"VariableDeclaration","scope":54622,"src":"6103:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54606,"name":"uint256","nodeType":"ElementaryTypeName","src":"6103:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":54609,"mutability":"mutable","name":"attester","nameLocation":"6135:8:105","nodeType":"VariableDeclaration","scope":54622,"src":"6127:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54608,"name":"address","nodeType":"ElementaryTypeName","src":"6127:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6093:56:105"},"returnParameters":{"id":54614,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54613,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54622,"src":"6171:22:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54612,"nodeType":"UserDefinedTypeName","pathNode":{"id":54611,"name":"BlockCommitment","nameLocations":["6171:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"6171:15:105"},"referencedDeclaration":55140,"src":"6171:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"6170:24:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54647,"nodeType":"FunctionDefinition","src":"6313:355:105","nodes":[],"body":{"id":54646,"nodeType":"Block","src":"6404:264:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54630,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"6443:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54631,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6461:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6465:6:105","memberName":"sender","nodeType":"MemberAccess","src":"6461:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54629,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"6435:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":54633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6435:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5345545f4c4153545f41434345505445445f434f4d4d49544d454e545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f4f4e4c59","id":54634,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6486:65:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_eb712219b94520b4470c018f6c762304434da9ee15c77ce6b40fd64ba5f797ad","typeString":"literal_string \"SET_LAST_ACCEPTED_COMMITMENT_AT_HEIGHT_IS_COMMITMENT_ADMIN_ONLY\""},"value":"SET_LAST_ACCEPTED_COMMITMENT_AT_HEIGHT_IS_COMMITMENT_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_eb712219b94520b4470c018f6c762304434da9ee15c77ce6b40fd64ba5f797ad","typeString":"literal_string \"SET_LAST_ACCEPTED_COMMITMENT_AT_HEIGHT_IS_COMMITMENT_ADMIN_ONLY\""}],"id":54628,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6414:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54635,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6414:147:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54636,"nodeType":"ExpressionStatement","src":"6414:147:105"},{"expression":{"id":54644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":54637,"name":"versionedAcceptedBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55171,"src":"6571:23:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct MCRStorage.BlockCommitment storage ref))"}},"id":54641,"indexExpression":{"id":54638,"name":"acceptedBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"6595:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6571:46:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(uint256 => struct MCRStorage.BlockCommitment storage ref)"}},"id":54642,"indexExpression":{"expression":{"id":54639,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54625,"src":"6618:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54640,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"6634:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"6618:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6571:70:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54643,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54625,"src":"6644:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"src":"6571:88:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"id":54645,"nodeType":"ExpressionStatement","src":"6571:88:105"}]},"functionSelector":"53cd9e3c","implemented":true,"kind":"function","modifiers":[],"name":"setAcceptedCommitmentAtBlockHeight","nameLocation":"6322:34:105","parameters":{"id":54626,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54625,"mutability":"mutable","name":"blockCommitment","nameLocation":"6380:15:105","nodeType":"VariableDeclaration","scope":54647,"src":"6357:38:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54624,"nodeType":"UserDefinedTypeName","pathNode":{"id":54623,"name":"BlockCommitment","nameLocations":["6357:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"6357:15:105"},"referencedDeclaration":55140,"src":"6357:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"6356:40:105"},"returnParameters":{"id":54627,"nodeType":"ParameterList","parameters":[],"src":"6404:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54666,"nodeType":"FunctionDefinition","src":"6719:257:105","nodes":[],"body":{"id":54665,"nodeType":"Block","src":"6778:198:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54654,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"6817:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54655,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6835:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6839:6:105","memberName":"sender","nodeType":"MemberAccess","src":"6835:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54653,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"6809:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":54657,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6809:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5345545f4c4153545f41434345505445445f424c4f434b5f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f4f4e4c59","id":54658,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"6860:57:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_d2dac7dca18283c0beccebe91d8cbd37ac458eb7392d0f631caf887f9c53dad9","typeString":"literal_string \"SET_LAST_ACCEPTED_BLOCK_HEIGHT_IS_COMMITMENT_ADMIN_ONLY\""},"value":"SET_LAST_ACCEPTED_BLOCK_HEIGHT_IS_COMMITMENT_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d2dac7dca18283c0beccebe91d8cbd37ac458eb7392d0f631caf887f9c53dad9","typeString":"literal_string \"SET_LAST_ACCEPTED_BLOCK_HEIGHT_IS_COMMITMENT_ADMIN_ONLY\""}],"id":54652,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"6788:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6788:139:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54660,"nodeType":"ExpressionStatement","src":"6788:139:105"},{"expression":{"id":54663,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54661,"name":"lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55133,"src":"6937:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54662,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54649,"src":"6963:6:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6937:32:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54664,"nodeType":"ExpressionStatement","src":"6937:32:105"}]},"functionSelector":"5a912c83","implemented":true,"kind":"function","modifiers":[],"name":"setLastAcceptedBlockHeight","nameLocation":"6728:26:105","parameters":{"id":54650,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54649,"mutability":"mutable","name":"height","nameLocation":"6763:6:105","nodeType":"VariableDeclaration","scope":54666,"src":"6755:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54648,"name":"uint256","nodeType":"ElementaryTypeName","src":"6755:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6754:16:105"},"returnParameters":{"id":54651,"nodeType":"ParameterList","parameters":[],"src":"6778:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54708,"nodeType":"FunctionDefinition","src":"7166:586:105","nodes":[],"body":{"id":54707,"nodeType":"Block","src":"7244:508:105","nodes":[],"statements":[{"expression":{"arguments":[{"hexValue":"666f7263654c6174657374436f6d6d69746d656e742063616c6c65642062793a","id":54675,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7266:34:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_6bf3a4b27c9865f6edf916446439f0fcb863605c9ad30161c8f975a092ee91c9","typeString":"literal_string \"forceLatestCommitment called by:\""},"value":"forceLatestCommitment called by:"},{"expression":{"id":54676,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7302:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7306:6:105","memberName":"sender","nodeType":"MemberAccess","src":"7302:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_6bf3a4b27c9865f6edf916446439f0fcb863605c9ad30161c8f975a092ee91c9","typeString":"literal_string \"forceLatestCommitment called by:\""},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54672,"name":"console","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":24306,"src":"7254:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_console_$24306_$","typeString":"type(library console)"}},"id":54674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7262:3:105","memberName":"log","nodeType":"MemberAccess","referencedDeclaration":17001,"src":"7254:11:105","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_string_memory_ptr_$_t_address_$returns$__$","typeString":"function (string memory,address) pure"}},"id":54678,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7254:59:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54679,"nodeType":"ExpressionStatement","src":"7254:59:105"},{"expression":{"arguments":[{"arguments":[{"id":54682,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"7352:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54683,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7370:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54684,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7374:6:105","memberName":"sender","nodeType":"MemberAccess","src":"7370:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54681,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"7344:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":54685,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7344:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d49544d454e545f41444d494e5f4f4e4c59","id":54686,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"7395:50:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_769db6d293c786b13b107ddcfdc491f9fdfa9dc0a09944362f64328186fea1df","typeString":"literal_string \"FORCE_LATEST_COMMITMENT_IS_COMMITMENT_ADMIN_ONLY\""},"value":"FORCE_LATEST_COMMITMENT_IS_COMMITMENT_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_769db6d293c786b13b107ddcfdc491f9fdfa9dc0a09944362f64328186fea1df","typeString":"literal_string \"FORCE_LATEST_COMMITMENT_IS_COMMITMENT_ADMIN_ONLY\""}],"id":54680,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"7323:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7323:132:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54688,"nodeType":"ExpressionStatement","src":"7323:132:105"},{"expression":{"id":54691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54689,"name":"acceptedBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"7562:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":54690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7587:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"7562:26:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54692,"nodeType":"ExpressionStatement","src":"7562:26:105"},{"expression":{"id":54700,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":54693,"name":"versionedAcceptedBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55171,"src":"7598:23:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct MCRStorage.BlockCommitment storage ref))"}},"id":54697,"indexExpression":{"id":54694,"name":"acceptedBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"7622:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7598:46:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(uint256 => struct MCRStorage.BlockCommitment storage ref)"}},"id":54698,"indexExpression":{"expression":{"id":54695,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54669,"src":"7645:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54696,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7661:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"7645:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7598:70:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54699,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54669,"src":"7671:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"src":"7598:88:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"id":54701,"nodeType":"ExpressionStatement","src":"7598:88:105"},{"expression":{"id":54705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54702,"name":"lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55133,"src":"7696:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":54703,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54669,"src":"7722:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7738:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"7722:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7696:48:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54706,"nodeType":"ExpressionStatement","src":"7696:48:105"}]},"functionSelector":"08c7050f","implemented":true,"kind":"function","modifiers":[],"name":"forceLatestCommitment","nameLocation":"7175:21:105","parameters":{"id":54670,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54669,"mutability":"mutable","name":"blockCommitment","nameLocation":"7220:15:105","nodeType":"VariableDeclaration","scope":54708,"src":"7197:38:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54668,"nodeType":"UserDefinedTypeName","pathNode":{"id":54667,"name":"BlockCommitment","nameLocations":["7197:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"7197:15:105"},"referencedDeclaration":55140,"src":"7197:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"7196:40:105"},"returnParameters":{"id":54671,"nodeType":"ParameterList","parameters":[],"src":"7244:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54723,"nodeType":"FunctionDefinition","src":"7758:183:105","nodes":[],"body":{"id":54722,"nodeType":"Block","src":"7863:78:105","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":54716,"name":"versionedAcceptedBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55171,"src":"7880:23:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct MCRStorage.BlockCommitment storage ref))"}},"id":54718,"indexExpression":{"id":54717,"name":"acceptedBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"7904:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7880:46:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(uint256 => struct MCRStorage.BlockCommitment storage ref)"}},"id":54720,"indexExpression":{"id":54719,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54710,"src":"7927:6:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7880:54:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"functionReturnParameters":54715,"id":54721,"nodeType":"Return","src":"7873:61:105"}]},"functionSelector":"e1ffa44c","implemented":true,"kind":"function","modifiers":[],"name":"getAcceptedCommitmentAtBlockHeight","nameLocation":"7767:34:105","parameters":{"id":54711,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54710,"mutability":"mutable","name":"height","nameLocation":"7810:6:105","nodeType":"VariableDeclaration","scope":54723,"src":"7802:14:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54709,"name":"uint256","nodeType":"ElementaryTypeName","src":"7802:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7801:16:105"},"returnParameters":{"id":54715,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54714,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54723,"src":"7839:22:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54713,"nodeType":"UserDefinedTypeName","pathNode":{"id":54712,"name":"BlockCommitment","nameLocations":["7839:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"7839:15:105"},"referencedDeclaration":55140,"src":"7839:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"7838:24:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54738,"nodeType":"FunctionDefinition","src":"7947:138:105","nodes":[],"body":{"id":54737,"nodeType":"Block","src":"8010:75:105","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":54733,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8072:4:105","typeDescriptions":{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MCR_$55118","typeString":"contract MCR"}],"id":54732,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8064:7:105","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":54731,"name":"address","nodeType":"ElementaryTypeName","src":"8064:7:105","typeDescriptions":{}}},"id":54734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8064:13:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":54729,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"8027:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":54730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8043:20:105","memberName":"getAttestersByDomain","nodeType":"MemberAccess","referencedDeclaration":56827,"src":"8027:36:105","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":54735,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8027:51:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":54728,"id":54736,"nodeType":"Return","src":"8020:58:105"}]},"functionSelector":"4ed7e435","implemented":true,"kind":"function","modifiers":[],"name":"getAttesters","nameLocation":"7956:12:105","parameters":{"id":54724,"nodeType":"ParameterList","parameters":[],"src":"7968:2:105"},"returnParameters":{"id":54728,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54727,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54738,"src":"7992:16:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54725,"name":"address","nodeType":"ElementaryTypeName","src":"7992:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54726,"nodeType":"ArrayTypeName","src":"7992:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"7991:18:105"},"scope":55118,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":54827,"nodeType":"FunctionDefinition","src":"8163:2197:105","nodes":[],"body":{"id":54826,"nodeType":"Block","src":"8294:2066:105","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54755,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":54747,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55151,"src":"8376:11:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct MCRStorage.BlockCommitment storage ref))"}},"id":54750,"indexExpression":{"expression":{"id":54748,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"8388:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54749,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8404:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"8388:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8376:35:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(address => struct MCRStorage.BlockCommitment storage ref)"}},"id":54752,"indexExpression":{"id":54751,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54741,"src":"8412:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8376:45:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"id":54753,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8422:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"8376:52:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":54754,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8432:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8376:57:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54759,"nodeType":"IfStatement","src":"8372:108:105","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54756,"name":"AttesterAlreadyCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55200,"src":"8454:24:105","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":54757,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8454:26:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":54758,"nodeType":"RevertStatement","src":"8447:33:105"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54760,"name":"lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55133,"src":"8854:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":54761,"name":"leadingBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55131,"src":"8880:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8854:47:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54763,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"8916:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54764,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"8932:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"8916:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8854:84:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54769,"nodeType":"IfStatement","src":"8837:145:105","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":54766,"name":"AttesterAlreadyCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55200,"src":"8956:24:105","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":54767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8956:26:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":54768,"nodeType":"RevertStatement","src":"8949:33:105"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":54770,"name":"blockHeightEpochAssignments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55144,"src":"9084:27:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":54773,"indexExpression":{"expression":{"id":54771,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9112:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54772,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9128:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"9112:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9084:51:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":54774,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9139:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9084:56:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54785,"nodeType":"IfStatement","src":"9080:291:105","trueBody":{"id":54784,"nodeType":"Block","src":"9142:229:105","statements":[{"expression":{"id":54782,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":54776,"name":"blockHeightEpochAssignments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55144,"src":"9255:27:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":54779,"indexExpression":{"expression":{"id":54777,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9300:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54778,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9316:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"9300:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9255:81:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":54780,"name":"getEpochByBlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54359,"src":"9339:19:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9339:21:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9255:105:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54783,"nodeType":"ExpressionStatement","src":"9255:105:105"}]}},{"expression":{"id":54793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":54786,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55151,"src":"9427:11:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct MCRStorage.BlockCommitment storage ref))"}},"id":54790,"indexExpression":{"expression":{"id":54787,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9439:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54788,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9455:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"9439:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9427:35:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(address => struct MCRStorage.BlockCommitment storage ref)"}},"id":54791,"indexExpression":{"id":54789,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54741,"src":"9463:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9427:45:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54792,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9475:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"src":"9427:63:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"id":54794,"nodeType":"ExpressionStatement","src":"9427:63:105"},{"assignments":[54796],"declarations":[{"constant":false,"id":54796,"mutability":"mutable","name":"allCurrentEpochStake","nameLocation":"9560:20:105","nodeType":"VariableDeclaration","scope":54826,"src":"9552:28:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54795,"name":"uint256","nodeType":"ElementaryTypeName","src":"9552:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54800,"initialValue":{"arguments":[{"id":54798,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54741,"src":"9611:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":54797,"name":"computeAllCurrentEpochStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54493,"src":"9583:27:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":54799,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9583:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9552:68:105"},{"expression":{"id":54809,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":54801,"name":"commitmentStakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55157,"src":"9630:16:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":54806,"indexExpression":{"expression":{"id":54802,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9647:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54803,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9663:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"9647:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9630:40:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":54807,"indexExpression":{"expression":{"id":54804,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9684:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9700:10:105","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":55137,"src":"9684:26:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"9630:90:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":54808,"name":"allCurrentEpochStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54796,"src":"9724:20:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9630:114:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54810,"nodeType":"ExpressionStatement","src":"9630:114:105"},{"eventCall":{"arguments":[{"expression":{"id":54812,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9798:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54813,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9814:7:105","memberName":"blockId","nodeType":"MemberAccess","referencedDeclaration":55139,"src":"9798:23:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54814,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54744,"src":"9835:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54815,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9851:10:105","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":55137,"src":"9835:26:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54816,"name":"allCurrentEpochStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54796,"src":"9875:20:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54811,"name":"BlockCommitmentSubmitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55196,"src":"9760:24:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes32,uint256)"}},"id":54817,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9760:145:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54818,"nodeType":"EmitStatement","src":"9755:150:105"},{"body":{"id":54824,"nodeType":"Block","src":"10352:2:105","statements":[]},"condition":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54822,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54820,"name":"lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55133,"src":"10322:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":54821,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10348:1:105","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10322:27:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54819,"name":"tickOnBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54920,"src":"10304:17:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) returns (bool)"}},"id":54823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10304:46:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54825,"nodeType":"WhileStatement","src":"10297:57:105"}]},"documentation":{"id":54739,"nodeType":"StructuredDocumentation","src":"8091:67:105","text":" @dev submits a block commitment for an attester."},"implemented":true,"kind":"function","modifiers":[],"name":"submitBlockCommitmentForAttester","nameLocation":"8172:32:105","parameters":{"id":54745,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54741,"mutability":"mutable","name":"attester","nameLocation":"8222:8:105","nodeType":"VariableDeclaration","scope":54827,"src":"8214:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54740,"name":"address","nodeType":"ElementaryTypeName","src":"8214:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":54744,"mutability":"mutable","name":"blockCommitment","nameLocation":"8263:15:105","nodeType":"VariableDeclaration","scope":54827,"src":"8240:38:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54743,"nodeType":"UserDefinedTypeName","pathNode":{"id":54742,"name":"BlockCommitment","nameLocations":["8240:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"8240:15:105"},"referencedDeclaration":55140,"src":"8240:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"8204:80:105"},"returnParameters":{"id":54746,"nodeType":"ParameterList","parameters":[],"src":"8294:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":54920,"nodeType":"FunctionDefinition","src":"10382:1799:105","nodes":[],"body":{"id":54919,"nodeType":"Block","src":"10454:1727:105","nodes":[],"statements":[{"assignments":[54835],"declarations":[{"constant":false,"id":54835,"mutability":"mutable","name":"blockEpoch","nameLocation":"10526:10:105","nodeType":"VariableDeclaration","scope":54919,"src":"10518:18:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54834,"name":"uint256","nodeType":"ElementaryTypeName","src":"10518:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54839,"initialValue":{"baseExpression":{"id":54836,"name":"blockHeightEpochAssignments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55144,"src":"10539:27:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":54838,"indexExpression":{"id":54837,"name":"blockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54829,"src":"10567:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10539:40:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10518:61:105"},{"body":{"id":54847,"nodeType":"Block","src":"10947:40:105","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":54844,"name":"rollOverEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55117,"src":"10961:13:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":54845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10961:15:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54846,"nodeType":"ExpressionStatement","src":"10961:15:105"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54843,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":54840,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54373,"src":"10915:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":54841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10915:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":54842,"name":"blockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54835,"src":"10935:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10915:30:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54848,"nodeType":"WhileStatement","src":"10908:79:105"},{"assignments":[54850],"declarations":[{"constant":false,"id":54850,"mutability":"mutable","name":"supermajority","nameLocation":"11166:13:105","nodeType":"VariableDeclaration","scope":54919,"src":"11158:21:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54849,"name":"uint256","nodeType":"ElementaryTypeName","src":"11158:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54859,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":54851,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11183:1:105","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":54853,"name":"blockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54835,"src":"11216:10:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":54852,"name":"computeAllTotalStakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54580,"src":"11187:28:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":54854,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11187:40:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11183:44:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":54856,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"11182:46:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":54857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11243:1:105","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"11182:62:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11158:86:105"},{"assignments":[54864],"declarations":[{"constant":false,"id":54864,"mutability":"mutable","name":"attesters","nameLocation":"11271:9:105","nodeType":"VariableDeclaration","scope":54919,"src":"11254:26:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54862,"name":"address","nodeType":"ElementaryTypeName","src":"11254:7:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54863,"nodeType":"ArrayTypeName","src":"11254:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":54867,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":54865,"name":"getAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54738,"src":"11283:12:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view returns (address[] memory)"}},"id":54866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11283:14:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"11254:43:105"},{"body":{"id":54915,"nodeType":"Block","src":"11396:756:105","statements":[{"assignments":[54880],"declarations":[{"constant":false,"id":54880,"mutability":"mutable","name":"attester","nameLocation":"11418:8:105","nodeType":"VariableDeclaration","scope":54915,"src":"11410:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54879,"name":"address","nodeType":"ElementaryTypeName","src":"11410:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":54884,"initialValue":{"baseExpression":{"id":54881,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54864,"src":"11429:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54883,"indexExpression":{"id":54882,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54869,"src":"11439:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11429:12:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11410:31:105"},{"assignments":[54887],"declarations":[{"constant":false,"id":54887,"mutability":"mutable","name":"blockCommitment","nameLocation":"11548:15:105","nodeType":"VariableDeclaration","scope":54915,"src":"11525:38:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54886,"nodeType":"UserDefinedTypeName","pathNode":{"id":54885,"name":"BlockCommitment","nameLocations":["11525:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"11525:15:105"},"referencedDeclaration":55140,"src":"11525:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"id":54893,"initialValue":{"baseExpression":{"baseExpression":{"id":54888,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55151,"src":"11566:11:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct MCRStorage.BlockCommitment storage ref))"}},"id":54890,"indexExpression":{"id":54889,"name":"blockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54829,"src":"11578:11:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11566:24:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(address => struct MCRStorage.BlockCommitment storage ref)"}},"id":54892,"indexExpression":{"id":54891,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54880,"src":"11608:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11566:64:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"nodeType":"VariableDeclarationStatement","src":"11525:105:105"},{"assignments":[54895],"declarations":[{"constant":false,"id":54895,"mutability":"mutable","name":"totalStakeOnCommitment","nameLocation":"11708:22:105","nodeType":"VariableDeclaration","scope":54915,"src":"11700:30:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54894,"name":"uint256","nodeType":"ElementaryTypeName","src":"11700:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54903,"initialValue":{"baseExpression":{"baseExpression":{"id":54896,"name":"commitmentStakes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55157,"src":"11733:16:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":54899,"indexExpression":{"expression":{"id":54897,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54887,"src":"11767:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54898,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11783:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"11767:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11733:70:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":54902,"indexExpression":{"expression":{"id":54900,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54887,"src":"11804:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":54901,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11820:10:105","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":55137,"src":"11804:26:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11733:98:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"11700:131:105"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54906,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54904,"name":"totalStakeOnCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54895,"src":"11850:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":54905,"name":"supermajority","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54850,"src":"11875:13:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11850:38:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54914,"nodeType":"IfStatement","src":"11846:296:105","trueBody":{"id":54913,"nodeType":"Block","src":"11890:252:105","statements":[{"expression":{"arguments":[{"id":54908,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54887,"src":"12022:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}],"id":54907,"name":"_acceptBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55100,"src":"11999:22:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_BlockCommitment_$55140_memory_ptr_$returns$__$","typeString":"function (struct MCRStorage.BlockCommitment memory)"}},"id":54909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11999:39:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54910,"nodeType":"ExpressionStatement","src":"11999:39:105"},{"expression":{"hexValue":"74727565","id":54911,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12123:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":54833,"id":54912,"nodeType":"Return","src":"12116:11:105"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54872,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54869,"src":"11369:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54873,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54864,"src":"11373:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54874,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11383:6:105","memberName":"length","nodeType":"MemberAccess","src":"11373:16:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11369:20:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54916,"initializationExpression":{"assignments":[54869],"declarations":[{"constant":false,"id":54869,"mutability":"mutable","name":"i","nameLocation":"11362:1:105","nodeType":"VariableDeclaration","scope":54916,"src":"11354:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54868,"name":"uint256","nodeType":"ElementaryTypeName","src":"11354:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54871,"initialValue":{"hexValue":"30","id":54870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11366:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11354:13:105"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":54877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11391:3:105","subExpression":{"id":54876,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54869,"src":"11391:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54878,"nodeType":"ExpressionStatement","src":"11391:3:105"},"nodeType":"ForStatement","src":"11349:803:105"},{"expression":{"hexValue":"66616c7365","id":54917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12169:5:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":54833,"id":54918,"nodeType":"Return","src":"12162:12:105"}]},"implemented":true,"kind":"function","modifiers":[],"name":"tickOnBlockHeight","nameLocation":"10391:17:105","parameters":{"id":54830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54829,"mutability":"mutable","name":"blockHeight","nameLocation":"10417:11:105","nodeType":"VariableDeclaration","scope":54920,"src":"10409:19:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54828,"name":"uint256","nodeType":"ElementaryTypeName","src":"10409:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10408:21:105"},"returnParameters":{"id":54833,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54832,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":54920,"src":"10448:4:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54831,"name":"bool","nodeType":"ElementaryTypeName","src":"10448:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"10447:6:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":54934,"nodeType":"FunctionDefinition","src":"12187:136:105","nodes":[],"body":{"id":54933,"nodeType":"Block","src":"12269:54:105","nodes":[],"statements":[{"expression":{"arguments":[{"id":54929,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54195,"src":"12289:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":54930,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54922,"src":"12307:8:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54928,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39213,"src":"12279:9:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":54931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12279:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54932,"nodeType":"ExpressionStatement","src":"12279:37:105"}]},"functionSelector":"81df1746","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":54925,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"12251:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":54926,"kind":"modifierInvocation","modifierName":{"id":54924,"name":"onlyRole","nameLocations":["12242:8:105"],"nodeType":"IdentifierPath","referencedDeclaration":39080,"src":"12242:8:105"},"nodeType":"ModifierInvocation","src":"12242:26:105"}],"name":"grantTrustedAttester","nameLocation":"12196:20:105","parameters":{"id":54923,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54922,"mutability":"mutable","name":"attester","nameLocation":"12225:8:105","nodeType":"VariableDeclaration","scope":54934,"src":"12217:16:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":54921,"name":"address","nodeType":"ElementaryTypeName","src":"12217:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"12216:18:105"},"returnParameters":{"id":54927,"nodeType":"ParameterList","parameters":[],"src":"12269:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54964,"nodeType":"FunctionDefinition","src":"12329:227:105","nodes":[],"body":{"id":54963,"nodeType":"Block","src":"12426:130:105","nodes":[],"statements":[{"body":{"id":54961,"nodeType":"Block","src":"12483:66:105","statements":[{"expression":{"arguments":[{"id":54955,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54195,"src":"12507:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":54956,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54937,"src":"12525:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54958,"indexExpression":{"id":54957,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54944,"src":"12535:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12525:12:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54954,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39213,"src":"12497:9:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":54959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12497:41:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54960,"nodeType":"ExpressionStatement","src":"12497:41:105"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":54950,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54947,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54944,"src":"12456:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":54948,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54937,"src":"12460:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":54949,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12470:6:105","memberName":"length","nodeType":"MemberAccess","src":"12460:16:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12456:20:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54962,"initializationExpression":{"assignments":[54944],"declarations":[{"constant":false,"id":54944,"mutability":"mutable","name":"i","nameLocation":"12449:1:105","nodeType":"VariableDeclaration","scope":54962,"src":"12441:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":54943,"name":"uint256","nodeType":"ElementaryTypeName","src":"12441:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":54946,"initialValue":{"hexValue":"30","id":54945,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12453:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12441:13:105"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":54952,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12478:3:105","subExpression":{"id":54951,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54944,"src":"12478:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":54953,"nodeType":"ExpressionStatement","src":"12478:3:105"},"nodeType":"ForStatement","src":"12436:113:105"}]},"functionSelector":"cf6772ad","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":54940,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"12408:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":54941,"kind":"modifierInvocation","modifierName":{"id":54939,"name":"onlyRole","nameLocations":["12399:8:105"],"nodeType":"IdentifierPath","referencedDeclaration":39080,"src":"12399:8:105"},"nodeType":"ModifierInvocation","src":"12399:26:105"}],"name":"batchGrantTrustedAttester","nameLocation":"12338:25:105","parameters":{"id":54938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54937,"mutability":"mutable","name":"attesters","nameLocation":"12381:9:105","nodeType":"VariableDeclaration","scope":54964,"src":"12364:26:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":54935,"name":"address","nodeType":"ElementaryTypeName","src":"12364:7:105","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":54936,"nodeType":"ArrayTypeName","src":"12364:9:105","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"12363:28:105"},"returnParameters":{"id":54942,"nodeType":"ParameterList","parameters":[],"src":"12426:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":54977,"nodeType":"FunctionDefinition","src":"12562:132:105","nodes":[],"body":{"id":54976,"nodeType":"Block","src":"12645:49:105","nodes":[],"statements":[{"expression":{"id":54974,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":54972,"name":"openAttestationEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55164,"src":"12655:22:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":54973,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54966,"src":"12680:7:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12655:32:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":54975,"nodeType":"ExpressionStatement","src":"12655:32:105"}]},"functionSelector":"d2526fef","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":54969,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54189,"src":"12627:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":54970,"kind":"modifierInvocation","modifierName":{"id":54968,"name":"onlyRole","nameLocations":["12618:8:105"],"nodeType":"IdentifierPath","referencedDeclaration":39080,"src":"12618:8:105"},"nodeType":"ModifierInvocation","src":"12618:26:105"}],"name":"setOpenAttestationEnabled","nameLocation":"12571:25:105","parameters":{"id":54967,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54966,"mutability":"mutable","name":"enabled","nameLocation":"12602:7:105","nodeType":"VariableDeclaration","scope":54977,"src":"12597:12:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":54965,"name":"bool","nodeType":"ElementaryTypeName","src":"12597:4:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"12596:14:105"},"returnParameters":{"id":54971,"nodeType":"ParameterList","parameters":[],"src":"12645:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":55001,"nodeType":"FunctionDefinition","src":"12700:305:105","nodes":[],"body":{"id":55000,"nodeType":"Block","src":"12778:227:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":54990,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":54984,"name":"openAttestationEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55164,"src":"12809:22:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":54986,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54195,"src":"12843:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":54987,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12861:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54988,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12865:6:105","memberName":"sender","nodeType":"MemberAccess","src":"12861:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":54985,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"12835:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":54989,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12835:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12809:63:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e415554484f52495a45445f424c4f434b5f434f4d4d49544d454e54","id":54991,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12886:31:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_8464081c60f016e7c752cfd9164491a5ff4ec2e6582c10eabdcf0b44da1ab8fe","typeString":"literal_string \"UNAUTHORIZED_BLOCK_COMMITMENT\""},"value":"UNAUTHORIZED_BLOCK_COMMITMENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8464081c60f016e7c752cfd9164491a5ff4ec2e6582c10eabdcf0b44da1ab8fe","typeString":"literal_string \"UNAUTHORIZED_BLOCK_COMMITMENT\""}],"id":54983,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"12788:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":54992,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12788:139:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54993,"nodeType":"ExpressionStatement","src":"12788:139:105"},{"expression":{"arguments":[{"expression":{"id":54995,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12970:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":54996,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12974:6:105","memberName":"sender","nodeType":"MemberAccess","src":"12970:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":54997,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54980,"src":"12982:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}],"id":54994,"name":"submitBlockCommitmentForAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54827,"src":"12937:32:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_BlockCommitment_$55140_memory_ptr_$returns$__$","typeString":"function (address,struct MCRStorage.BlockCommitment memory)"}},"id":54998,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12937:61:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":54999,"nodeType":"ExpressionStatement","src":"12937:61:105"}]},"functionSelector":"f89fe60b","implemented":true,"kind":"function","modifiers":[],"name":"submitBlockCommitment","nameLocation":"12709:21:105","parameters":{"id":54981,"nodeType":"ParameterList","parameters":[{"constant":false,"id":54980,"mutability":"mutable","name":"blockCommitment","nameLocation":"12754:15:105","nodeType":"VariableDeclaration","scope":55001,"src":"12731:38:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":54979,"nodeType":"UserDefinedTypeName","pathNode":{"id":54978,"name":"BlockCommitment","nameLocations":["12731:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"12731:15:105"},"referencedDeclaration":55140,"src":"12731:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"12730:40:105"},"returnParameters":{"id":54982,"nodeType":"ParameterList","parameters":[],"src":"12778:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":55041,"nodeType":"FunctionDefinition","src":"13011:395:105","nodes":[],"body":{"id":55040,"nodeType":"Block","src":"13097:309:105","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":55015,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55009,"name":"openAttestationEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55164,"src":"13128:22:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":55011,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54195,"src":"13162:16:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55012,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13180:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55013,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13184:6:105","memberName":"sender","nodeType":"MemberAccess","src":"13180:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":55010,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39139,"src":"13154:7:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":55014,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13154:37:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"13128:63:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e415554484f52495a45445f424c4f434b5f434f4d4d49544d454e54","id":55016,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13205:31:105","typeDescriptions":{"typeIdentifier":"t_stringliteral_8464081c60f016e7c752cfd9164491a5ff4ec2e6582c10eabdcf0b44da1ab8fe","typeString":"literal_string \"UNAUTHORIZED_BLOCK_COMMITMENT\""},"value":"UNAUTHORIZED_BLOCK_COMMITMENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8464081c60f016e7c752cfd9164491a5ff4ec2e6582c10eabdcf0b44da1ab8fe","typeString":"literal_string \"UNAUTHORIZED_BLOCK_COMMITMENT\""}],"id":55008,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"13107:7:105","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":55017,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13107:139:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55018,"nodeType":"ExpressionStatement","src":"13107:139:105"},{"body":{"id":55038,"nodeType":"Block","src":"13310:90:105","statements":[{"expression":{"arguments":[{"expression":{"id":55031,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13357:3:105","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13361:6:105","memberName":"sender","nodeType":"MemberAccess","src":"13357:10:105","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":55033,"name":"blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55005,"src":"13369:16:105","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$55140_memory_ptr_$dyn_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory[] memory"}},"id":55035,"indexExpression":{"id":55034,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55020,"src":"13386:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13369:19:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}],"id":55030,"name":"submitBlockCommitmentForAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54827,"src":"13324:32:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_BlockCommitment_$55140_memory_ptr_$returns$__$","typeString":"function (address,struct MCRStorage.BlockCommitment memory)"}},"id":55036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13324:65:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55037,"nodeType":"ExpressionStatement","src":"13324:65:105"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55026,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55023,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55020,"src":"13276:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55024,"name":"blockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55005,"src":"13280:16:105","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$55140_memory_ptr_$dyn_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory[] memory"}},"id":55025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13297:6:105","memberName":"length","nodeType":"MemberAccess","src":"13280:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13276:27:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55039,"initializationExpression":{"assignments":[55020],"declarations":[{"constant":false,"id":55020,"mutability":"mutable","name":"i","nameLocation":"13269:1:105","nodeType":"VariableDeclaration","scope":55039,"src":"13261:9:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55019,"name":"uint256","nodeType":"ElementaryTypeName","src":"13261:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55022,"initialValue":{"hexValue":"30","id":55021,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13273:1:105","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13261:13:105"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55028,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13305:3:105","subExpression":{"id":55027,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55020,"src":"13305:1:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55029,"nodeType":"ExpressionStatement","src":"13305:3:105"},"nodeType":"ForStatement","src":"13256:144:105"}]},"functionSelector":"e1b2b222","implemented":true,"kind":"function","modifiers":[],"name":"submitBatchBlockCommitment","nameLocation":"13020:26:105","parameters":{"id":55006,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55005,"mutability":"mutable","name":"blockCommitments","nameLocation":"13072:16:105","nodeType":"VariableDeclaration","scope":55041,"src":"13047:41:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$55140_memory_ptr_$dyn_memory_ptr","typeString":"struct MCRStorage.BlockCommitment[]"},"typeName":{"baseType":{"id":55003,"nodeType":"UserDefinedTypeName","pathNode":{"id":55002,"name":"BlockCommitment","nameLocations":["13047:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"13047:15:105"},"referencedDeclaration":55140,"src":"13047:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"id":55004,"nodeType":"ArrayTypeName","src":"13047:17:105","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_BlockCommitment_$55140_storage_$dyn_storage_ptr","typeString":"struct MCRStorage.BlockCommitment[]"}},"visibility":"internal"}],"src":"13046:43:105"},"returnParameters":{"id":55007,"nodeType":"ParameterList","parameters":[],"src":"13097:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":55100,"nodeType":"FunctionDefinition","src":"13593:1184:105","nodes":[],"body":{"id":55099,"nodeType":"Block","src":"13688:1089:105","nodes":[],"statements":[{"assignments":[55049],"declarations":[{"constant":false,"id":55049,"mutability":"mutable","name":"currentEpoch","nameLocation":"13706:12:105","nodeType":"VariableDeclaration","scope":55099,"src":"13698:20:105","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55048,"name":"uint256","nodeType":"ElementaryTypeName","src":"13698:7:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55052,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":55050,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54373,"src":"13721:15:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55051,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13721:17:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13698:40:105"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55058,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":55053,"name":"blockHeightEpochAssignments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55144,"src":"13921:27:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":55056,"indexExpression":{"expression":{"id":55054,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"13949:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":55055,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13965:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"13949:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13921:51:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":55057,"name":"currentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55049,"src":"13976:12:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13921:67:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55062,"nodeType":"IfStatement","src":"13917:121:105","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":55059,"name":"UnacceptableBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55198,"src":"14009:27:105","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":55060,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14009:29:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":55061,"nodeType":"RevertStatement","src":"14002:36:105"}},{"expression":{"id":55070,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":55063,"name":"versionedAcceptedBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55171,"src":"14090:23:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct MCRStorage.BlockCommitment storage ref))"}},"id":55067,"indexExpression":{"id":55064,"name":"acceptedBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55173,"src":"14114:21:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14090:46:105","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_BlockCommitment_$55140_storage_$","typeString":"mapping(uint256 => struct MCRStorage.BlockCommitment storage ref)"}},"id":55068,"indexExpression":{"expression":{"id":55065,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"14137:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":55066,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14153:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"14137:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14090:70:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55069,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"14163:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"src":"14090:88:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage","typeString":"struct MCRStorage.BlockCommitment storage ref"}},"id":55071,"nodeType":"ExpressionStatement","src":"14090:88:105"},{"expression":{"id":55075,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55072,"name":"lastAcceptedBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55133,"src":"14231:23:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":55073,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"14257:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":55074,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14273:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"14257:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14231:48:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55076,"nodeType":"ExpressionStatement","src":"14231:48:105"},{"expression":{"arguments":[{"id":55078,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"14380:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}],"id":55077,"name":"slashMinority","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55107,"src":"14366:13:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_BlockCommitment_$55140_memory_ptr_$returns$__$","typeString":"function (struct MCRStorage.BlockCommitment memory)"}},"id":55079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14366:30:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55080,"nodeType":"ExpressionStatement","src":"14366:30:105"},{"eventCall":{"arguments":[{"expression":{"id":55082,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"14480:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":55083,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14496:7:105","memberName":"blockId","nodeType":"MemberAccess","referencedDeclaration":55139,"src":"14480:23:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55084,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"14517:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":55085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14533:10:105","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":55137,"src":"14517:26:105","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":55086,"name":"blockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55045,"src":"14557:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment memory"}},"id":55087,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14573:6:105","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":55135,"src":"14557:22:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55081,"name":"BlockAccepted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55188,"src":"14453:13:105","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes32,uint256)"}},"id":55088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14453:136:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55089,"nodeType":"EmitStatement","src":"14448:141:105"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55093,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":55090,"name":"getEpochByBlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":54359,"src":"14693:19:105","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":55091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14693:21:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":55092,"name":"currentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55049,"src":"14717:12:105","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14693:36:105","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55098,"nodeType":"IfStatement","src":"14689:82:105","trueBody":{"id":55097,"nodeType":"Block","src":"14731:40:105","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":55094,"name":"rollOverEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55117,"src":"14745:13:105","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55095,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14745:15:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55096,"nodeType":"ExpressionStatement","src":"14745:15:105"}]}}]},"documentation":{"id":55042,"nodeType":"StructuredDocumentation","src":"13412:176:105","text":" @dev Accepts a block commitment.\n @dev Under the current implementation this shares in recursion with the tickOnBlockHeight, so it should be reentrant."},"implemented":true,"kind":"function","modifiers":[],"name":"_acceptBlockCommitment","nameLocation":"13602:22:105","parameters":{"id":55046,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55045,"mutability":"mutable","name":"blockCommitment","nameLocation":"13657:15:105","nodeType":"VariableDeclaration","scope":55100,"src":"13634:38:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":55044,"nodeType":"UserDefinedTypeName","pathNode":{"id":55043,"name":"BlockCommitment","nameLocations":["13634:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"13634:15:105"},"referencedDeclaration":55140,"src":"13634:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"13624:54:105"},"returnParameters":{"id":55047,"nodeType":"ParameterList","parameters":[],"src":"13688:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":55107,"nodeType":"FunctionDefinition","src":"14799:160:105","nodes":[],"body":{"id":55106,"nodeType":"Block","src":"14871:88:105","nodes":[],"statements":[]},"implemented":true,"kind":"function","modifiers":[],"name":"slashMinority","nameLocation":"14808:13:105","parameters":{"id":55104,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55103,"mutability":"mutable","name":"blockCommitment","nameLocation":"14845:15:105","nodeType":"VariableDeclaration","scope":55107,"src":"14822:38:105","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_memory_ptr","typeString":"struct MCRStorage.BlockCommitment"},"typeName":{"id":55102,"nodeType":"UserDefinedTypeName","pathNode":{"id":55101,"name":"BlockCommitment","nameLocations":["14822:15:105"],"nodeType":"IdentifierPath","referencedDeclaration":55140,"src":"14822:15:105"},"referencedDeclaration":55140,"src":"14822:15:105","typeDescriptions":{"typeIdentifier":"t_struct$_BlockCommitment_$55140_storage_ptr","typeString":"struct MCRStorage.BlockCommitment"}},"visibility":"internal"}],"src":"14821:40:105"},"returnParameters":{"id":55105,"nodeType":"ParameterList","parameters":[],"src":"14871:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":55117,"nodeType":"FunctionDefinition","src":"15207:82:105","nodes":[],"body":{"id":55116,"nodeType":"Block","src":"15241:48:105","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":55111,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55129,"src":"15251:15:105","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$56904","typeString":"contract IMovementStaking"}},"id":55113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15267:13:105","memberName":"rollOverEpoch","nodeType":"MemberAccess","referencedDeclaration":56830,"src":"15251:29:105","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":55114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15251:31:105","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55115,"nodeType":"ExpressionStatement","src":"15251:31:105"}]},"documentation":{"id":55108,"nodeType":"StructuredDocumentation","src":"14965:237:105","text":" @dev nonReentrant because there is no need to reenter this function. It should be called iteratively. Marked on the internal method to simplify risks from complex calling patterns. This also calls an external contract."},"implemented":true,"kind":"function","modifiers":[],"name":"rollOverEpoch","nameLocation":"15216:13:105","parameters":{"id":55109,"nodeType":"ParameterList","parameters":[],"src":"15229:2:105"},"returnParameters":{"id":55110,"nodeType":"ParameterList","parameters":[],"src":"15241:0:105"},"scope":55118,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":54176,"name":"Initializable","nameLocations":["593:13:105"],"nodeType":"IdentifierPath","referencedDeclaration":39639,"src":"593:13:105"},"id":54177,"nodeType":"InheritanceSpecifier","src":"593:13:105"},{"baseName":{"id":54178,"name":"BaseSettlement","nameLocations":["608:14:105"],"nodeType":"IdentifierPath","referencedDeclaration":55256,"src":"608:14:105"},"id":54179,"nodeType":"InheritanceSpecifier","src":"608:14:105"},{"baseName":{"id":54180,"name":"MCRStorage","nameLocations":["624:10:105"],"nodeType":"IdentifierPath","referencedDeclaration":55178,"src":"624:10:105"},"id":54181,"nodeType":"InheritanceSpecifier","src":"624:10:105"},{"baseName":{"id":54182,"name":"IMCR","nameLocations":["636:4:105"],"nodeType":"IdentifierPath","referencedDeclaration":55201,"src":"636:4:105"},"id":54183,"nodeType":"InheritanceSpecifier","src":"636:4:105"}],"canonicalName":"MCR","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"internalFunctionIDs":{"16235":1},"linearizedBaseContracts":[55118,55201,55178,55256,39821,42755,39385,41148,45235,41527,40653,39639],"name":"MCR","nameLocation":"586:3:105","scope":55119,"usedErrors":[39402,39405,39666,39671,41454,41457,42965,42978,44073,44076,55198,55200],"usedEvents":[39410,41466,41475,41484,42944,55188,55196]}],"license":"UNLICENSED"},"id":105} \ No newline at end of file diff --git a/protocol/mcr/cli/client/abis/MOVEToken.json b/protocol/mcr/cli/client/abis/MOVEToken.json new file mode 100644 index 00000000..8435c339 --- /dev/null +++ b/protocol/mcr/cli/client/abis/MOVEToken.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"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":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_custody","type":"address","internalType":"address"}],"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":"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":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"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":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"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":"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":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61181a806100d65f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c8063485cc955116100b457806395d89b411161007957806395d89b4114610283578063a217fddf1461028b578063a9059cbb14610292578063d505accf146102a5578063d547741f146102b8578063dd62ed3e146102cb575f80fd5b8063485cc9551461021c57806370a082311461022f5780637ecebe001461024257806384b0196e1461025557806391d1485414610270575f80fd5b8063248a9ca3116100fa578063248a9ca3146101ca5780632f2ff15d146101dd578063313ce567146101f25780633644e5151461020157806336568abe14610209575f80fd5b806301ffc9a71461013657806306fdde031461015e578063095ea7b31461017357806318160ddd1461018657806323b872dd146101b7575b5f80fd5b610149610144366004611286565b6102de565b60405190151581526020015b60405180910390f35b610166610314565b60405161015591906112e2565b61014961018136600461130f565b6103b9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610155565b6101496101c5366004611337565b6103d0565b6101a96101d8366004611371565b6103f3565b6101f06101eb366004611388565b610413565b005b60405160088152602001610155565b6101a9610435565b6101f0610217366004611388565b610443565b6101f061022a3660046113b2565b61047b565b6101a961023d3660046113da565b610661565b6101a96102503660046113da565b610691565b61025d61069b565b60405161015597969594939291906113f3565b61014961027e366004611388565b610749565b61016661077f565b6101a95f81565b6101496102a036600461130f565b6107bd565b6101f06102b3366004611489565b6107ca565b6101f06102c6366004611388565b61091f565b6101a96102d93660046113b2565b61093b565b5f6001600160e01b03198216637965db0b60e01b148061030e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f5f805160206117858339815191525b9050806003018054610337906114f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906114f6565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505091505090565b5f336103c6818585610984565b5060019392505050565b5f336103dd858285610991565b6103e88585856109ee565b506001949350505050565b5f9081525f805160206117c5833981519152602052604090206001015490565b61041c826103f3565b61042581610a4b565b61042f8383610a58565b50505050565b5f61043e610af9565b905090565b6001600160a01b038116331461046c5760405163334bd91960e11b815260040160405180910390fd5b6104768282610b02565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156104c05750825b90505f8267ffffffffffffffff1660011480156104dc5750303b155b9050811580156104ea575080155b156105085760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561053257845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061055257506001600160a01b03861615155b61055a575f80fd5b6105a060405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610b7b565b6105e360405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610b91565b6105ed5f88610a58565b50610612866105fe6008600a611625565b61060d906402540be400611633565b610bf0565b831561065857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f805f805160206117858339815191525b6001600160a01b039093165f9081526020939093525050604090205490565b5f61030e82610c24565b5f60608082808083815f805160206117a583398151915280549091501580156106c657506001810154155b61070f5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610717610c4c565b61071f610c8a565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f9182525f805160206117c5833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061178583398151915291610337906114f6565b5f336103c68185856109ee565b834211156107ee5760405163313c898160e11b815260048101859052602401610706565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108588c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6108b282610ca0565b90505f6108c182878787610ccc565b9050896001600160a01b0316816001600160a01b031614610908576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610706565b6109138a8a8a610984565b50505050505050505050565b610928826103f3565b61093181610a4b565b61042f8383610b02565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104768383836001610cf8565b5f61099c848461093b565b90505f19811461042f57818110156109e057604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610706565b61042f84848484035f610cf8565b6001600160a01b038316610a1757604051634b637e8f60e11b81525f6004820152602401610706565b6001600160a01b038216610a405760405163ec442f0560e01b81525f6004820152602401610706565b610476838383610ddc565b610a558133610f15565b50565b5f5f805160206117c5833981519152610a718484610749565b610af0575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610aa63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061030e565b5f91505061030e565b5f61043e610f4e565b5f5f805160206117c5833981519152610b1b8484610749565b15610af0575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061030e565b610b83610fc1565b610b8d828261100c565b5050565b610b99610fc1565b5f805160206117a58339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610bd284826116a2565b5060038101610be183826116a2565b505f8082556001909101555050565b6001600160a01b038216610c195760405163ec442f0560e01b81525f6004820152602401610706565b610b8d5f8383610ddc565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610672565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f805160206117a583398151915291610337906114f6565b60605f5f805160206117a5833981519152610326565b5f61030e610cac610af9565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f80610cdc8888888861105c565b925092509250610cec8282611124565b50909695505050505050565b5f805160206117858339815191526001600160a01b038516610d2f5760405163e602df0560e01b81525f6004820152602401610706565b6001600160a01b038416610d5857604051634a1406b160e11b81525f6004820152602401610706565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610dd557836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610dcc91815260200190565b60405180910390a35b5050505050565b5f805160206117858339815191526001600160a01b038416610e165781816002015f828254610e0b919061175d565b90915550610e869050565b6001600160a01b0384165f9081526020829052604090205482811015610e685760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610706565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610ea4576002810180548390039055610ec2565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0791815260200190565b60405180910390a350505050565b610f1f8282610749565b610b8d5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610706565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f786111dc565b610f80611244565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661100a57604051631afcd79f60e31b815260040160405180910390fd5b565b611014610fc1565b5f805160206117858339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361104d84826116a2565b506004810161042f83826116a2565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561109557505f9150600390508261111a565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156110e6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661111157505f92506001915082905061111a565b92505f91508190505b9450945094915050565b5f82600381111561113757611137611770565b03611140575050565b600182600381111561115457611154611770565b036111725760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561118657611186611770565b036111a75760405163fce698f760e01b815260048101829052602401610706565b60038260038111156111bb576111bb611770565b03610b8d576040516335e2f38360e21b815260048101829052602401610706565b5f5f805160206117a5833981519152816111f4610c4c565b80519091501561120c57805160209091012092915050565b8154801561121b579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f805160206117a58339815191528161125c610c8a565b80519091501561127457805160209091012092915050565b6001820154801561121b579392505050565b5f60208284031215611296575f80fd5b81356001600160e01b0319811681146112ad575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112ad60208301846112b4565b80356001600160a01b038116811461130a575f80fd5b919050565b5f8060408385031215611320575f80fd5b611329836112f4565b946020939093013593505050565b5f805f60608486031215611349575f80fd5b611352846112f4565b9250611360602085016112f4565b929592945050506040919091013590565b5f60208284031215611381575f80fd5b5035919050565b5f8060408385031215611399575f80fd5b823591506113a9602084016112f4565b90509250929050565b5f80604083850312156113c3575f80fd5b6113cc836112f4565b91506113a9602084016112f4565b5f602082840312156113ea575f80fd5b6112ad826112f4565b60ff60f81b8816815260e060208201525f61141160e08301896112b4565b828103604084015261142381896112b4565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561147857835183526020938401939092019160010161145a565b50909b9a5050505050505050505050565b5f805f805f805f60e0888a03121561149f575f80fd5b6114a8886112f4565b96506114b6602089016112f4565b95506040880135945060608801359350608088013560ff811681146114d9575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061150a57607f821691505b60208210810361152857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561157d578085048111156115615761156161152e565b600184161561156f57908102905b60019390931c928002611546565b935093915050565b5f826115935750600161030e565b8161159f57505f61030e565b81600181146115b557600281146115bf576115db565b600191505061030e565b60ff8411156115d0576115d061152e565b50506001821b61030e565b5060208310610133831016604e8410600b84101617156115fe575081810a61030e565b61160a5f198484611542565b805f190482111561161d5761161d61152e565b029392505050565b5f6112ad60ff841683611585565b808202811582820484141761030e5761030e61152e565b634e487b7160e01b5f52604160045260245ffd5b601f82111561047657805f5260205f20601f840160051c810160208510156116835750805b601f840160051c820191505b81811015610dd5575f815560010161168f565b815167ffffffffffffffff8111156116bc576116bc61164a565b6116d0816116ca84546114f6565b8461165e565b6020601f821160018114611702575f83156116eb5750848201515b5f19600385901b1c1916600184901b178455610dd5565b5f84815260208120601f198516915b828110156117315787850151825560209485019460019092019101611711565b508482101561174e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561030e5761030e61152e565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212200c213e57e697f2dee37f51b79647b3593da8c247917d58e21e2647bf25597abc64736f6c634300081a0033","sourceMap":"299:1259:113:-:0;;;447:39;;;;;;;;;-1:-1:-1;462:22:113;:20;:22::i;:::-;299:1259;;7711:422:25;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:25;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:25;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:25;-1:-1:-1;;;;;8035:33:25;;;;;8087:29;;158:50:138;;;8087:29:25;;146:2:138;131:18;8087:29:25;;;;;;;7981:146;7760:373;7711:422::o;14:200:138:-;299:1259:113;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b5060043610610132575f3560e01c8063485cc955116100b457806395d89b411161007957806395d89b4114610283578063a217fddf1461028b578063a9059cbb14610292578063d505accf146102a5578063d547741f146102b8578063dd62ed3e146102cb575f80fd5b8063485cc9551461021c57806370a082311461022f5780637ecebe001461024257806384b0196e1461025557806391d1485414610270575f80fd5b8063248a9ca3116100fa578063248a9ca3146101ca5780632f2ff15d146101dd578063313ce567146101f25780633644e5151461020157806336568abe14610209575f80fd5b806301ffc9a71461013657806306fdde031461015e578063095ea7b31461017357806318160ddd1461018657806323b872dd146101b7575b5f80fd5b610149610144366004611286565b6102de565b60405190151581526020015b60405180910390f35b610166610314565b60405161015591906112e2565b61014961018136600461130f565b6103b9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610155565b6101496101c5366004611337565b6103d0565b6101a96101d8366004611371565b6103f3565b6101f06101eb366004611388565b610413565b005b60405160088152602001610155565b6101a9610435565b6101f0610217366004611388565b610443565b6101f061022a3660046113b2565b61047b565b6101a961023d3660046113da565b610661565b6101a96102503660046113da565b610691565b61025d61069b565b60405161015597969594939291906113f3565b61014961027e366004611388565b610749565b61016661077f565b6101a95f81565b6101496102a036600461130f565b6107bd565b6101f06102b3366004611489565b6107ca565b6101f06102c6366004611388565b61091f565b6101a96102d93660046113b2565b61093b565b5f6001600160e01b03198216637965db0b60e01b148061030e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f5f805160206117858339815191525b9050806003018054610337906114f6565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906114f6565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505091505090565b5f336103c6818585610984565b5060019392505050565b5f336103dd858285610991565b6103e88585856109ee565b506001949350505050565b5f9081525f805160206117c5833981519152602052604090206001015490565b61041c826103f3565b61042581610a4b565b61042f8383610a58565b50505050565b5f61043e610af9565b905090565b6001600160a01b038116331461046c5760405163334bd91960e11b815260040160405180910390fd5b6104768282610b02565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156104c05750825b90505f8267ffffffffffffffff1660011480156104dc5750303b155b9050811580156104ea575080155b156105085760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561053257845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061055257506001600160a01b03861615155b61055a575f80fd5b6105a060405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610b7b565b6105e360405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610b91565b6105ed5f88610a58565b50610612866105fe6008600a611625565b61060d906402540be400611633565b610bf0565b831561065857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f805f805160206117858339815191525b6001600160a01b039093165f9081526020939093525050604090205490565b5f61030e82610c24565b5f60608082808083815f805160206117a583398151915280549091501580156106c657506001810154155b61070f5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610717610c4c565b61071f610c8a565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f9182525f805160206117c5833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061178583398151915291610337906114f6565b5f336103c68185856109ee565b834211156107ee5760405163313c898160e11b815260048101859052602401610706565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108588c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6108b282610ca0565b90505f6108c182878787610ccc565b9050896001600160a01b0316816001600160a01b031614610908576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610706565b6109138a8a8a610984565b50505050505050505050565b610928826103f3565b61093181610a4b565b61042f8383610b02565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104768383836001610cf8565b5f61099c848461093b565b90505f19811461042f57818110156109e057604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610706565b61042f84848484035f610cf8565b6001600160a01b038316610a1757604051634b637e8f60e11b81525f6004820152602401610706565b6001600160a01b038216610a405760405163ec442f0560e01b81525f6004820152602401610706565b610476838383610ddc565b610a558133610f15565b50565b5f5f805160206117c5833981519152610a718484610749565b610af0575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610aa63390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061030e565b5f91505061030e565b5f61043e610f4e565b5f5f805160206117c5833981519152610b1b8484610749565b15610af0575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061030e565b610b83610fc1565b610b8d828261100c565b5050565b610b99610fc1565b5f805160206117a58339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610bd284826116a2565b5060038101610be183826116a2565b505f8082556001909101555050565b6001600160a01b038216610c195760405163ec442f0560e01b81525f6004820152602401610706565b610b8d5f8383610ddc565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610672565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f805160206117a583398151915291610337906114f6565b60605f5f805160206117a5833981519152610326565b5f61030e610cac610af9565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f80610cdc8888888861105c565b925092509250610cec8282611124565b50909695505050505050565b5f805160206117858339815191526001600160a01b038516610d2f5760405163e602df0560e01b81525f6004820152602401610706565b6001600160a01b038416610d5857604051634a1406b160e11b81525f6004820152602401610706565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610dd557836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610dcc91815260200190565b60405180910390a35b5050505050565b5f805160206117858339815191526001600160a01b038416610e165781816002015f828254610e0b919061175d565b90915550610e869050565b6001600160a01b0384165f9081526020829052604090205482811015610e685760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610706565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610ea4576002810180548390039055610ec2565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0791815260200190565b60405180910390a350505050565b610f1f8282610749565b610b8d5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610706565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f786111dc565b610f80611244565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661100a57604051631afcd79f60e31b815260040160405180910390fd5b565b611014610fc1565b5f805160206117858339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361104d84826116a2565b506004810161042f83826116a2565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561109557505f9150600390508261111a565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156110e6573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661111157505f92506001915082905061111a565b92505f91508190505b9450945094915050565b5f82600381111561113757611137611770565b03611140575050565b600182600381111561115457611154611770565b036111725760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561118657611186611770565b036111a75760405163fce698f760e01b815260048101829052602401610706565b60038260038111156111bb576111bb611770565b03610b8d576040516335e2f38360e21b815260048101829052602401610706565b5f5f805160206117a5833981519152816111f4610c4c565b80519091501561120c57805160209091012092915050565b8154801561121b579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f805160206117a58339815191528161125c610c8a565b80519091501561127457805160209091012092915050565b6001820154801561121b579392505050565b5f60208284031215611296575f80fd5b81356001600160e01b0319811681146112ad575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112ad60208301846112b4565b80356001600160a01b038116811461130a575f80fd5b919050565b5f8060408385031215611320575f80fd5b611329836112f4565b946020939093013593505050565b5f805f60608486031215611349575f80fd5b611352846112f4565b9250611360602085016112f4565b929592945050506040919091013590565b5f60208284031215611381575f80fd5b5035919050565b5f8060408385031215611399575f80fd5b823591506113a9602084016112f4565b90509250929050565b5f80604083850312156113c3575f80fd5b6113cc836112f4565b91506113a9602084016112f4565b5f602082840312156113ea575f80fd5b6112ad826112f4565b60ff60f81b8816815260e060208201525f61141160e08301896112b4565b828103604084015261142381896112b4565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561147857835183526020938401939092019160010161145a565b50909b9a5050505050505050505050565b5f805f805f805f60e0888a03121561149f575f80fd5b6114a8886112f4565b96506114b6602089016112f4565b95506040880135945060608801359350608088013560ff811681146114d9575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061150a57607f821691505b60208210810361152857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561157d578085048111156115615761156161152e565b600184161561156f57908102905b60019390931c928002611546565b935093915050565b5f826115935750600161030e565b8161159f57505f61030e565b81600181146115b557600281146115bf576115db565b600191505061030e565b60ff8411156115d0576115d061152e565b50506001821b61030e565b5060208310610133831016604e8410600b84101617156115fe575081810a61030e565b61160a5f198484611542565b805f190482111561161d5761161d61152e565b029392505050565b5f6112ad60ff841683611585565b808202811582820484141761030e5761030e61152e565b634e487b7160e01b5f52604160045260245ffd5b601f82111561047657805f5260205f20601f840160051c810160208510156116835750805b601f840160051c820191505b81811015610dd5575f815560010161168f565b815167ffffffffffffffff8111156116bc576116bc61164a565b6116d0816116ca84546114f6565b8461165e565b6020601f821160018114611702575f83156116eb5750848201515b5f19600385901b1c1916600184901b178455610dd5565b5f84815260208120601f198516915b828110156117315787850151825560209485019460019092019101611711565b508482101561174e57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561030e5761030e61152e565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212200c213e57e697f2dee37f51b79647b3593da8c247917d58e21e2647bf25597abc64736f6c634300081a0033","sourceMap":"299:1259:113:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:24;;;;;;:::i;:::-;;:::i;:::-;;;470:14:138;;463:22;445:41;;433:2;418:18;3443:202:24;;;;;;;;3011:144:27;;;:::i;:::-;;;;;;;:::i;5505:186::-;;;;;;:::i;:::-;;:::i;4191:152::-;4322:14;;4191:152;;;1645:25:138;;;1633:2;1618:18;4191:152:27;1499:177:138;6251:244:27;;;;;;:::i;:::-;;:::i;4759:191:24:-;;;;;;:::i;:::-;;:::i;5246:136::-;;;;;;:::i;:::-;;:::i;:::-;;1474:82:113;;;1548:1;2920:36:138;;2908:2;2893:18;1474:82:113;2778:184:138;3082:112:28;;;:::i;6348:245:24:-;;;;;;:::i;:::-;;:::i;981:342:113:-;;;;;;:::i;:::-;;:::i;4401:171:27:-;;;;;;:::i;:::-;;:::i;2821:154:28:-;;;;;;:::i;:::-;;:::i;5173:903:31:-;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:24:-;;;;;;:::i;:::-;;:::i;3268:148:27:-;;;:::i;2317:49:24:-;;2362:4;2317:49;;4767:178:27;;;;;;:::i;:::-;;:::i;2095:672:28:-;;;;;;:::i;:::-;;:::i;5662:138:24:-;;;;;;:::i;:::-;;:::i;5003:195:27:-;;;;;;:::i;:::-;;:::i;3443:202:24:-;3528:4;-1:-1:-1;;;;;;3551:47:24;;-1:-1:-1;;;3551:47:24;;:87;;-1:-1:-1;;;;;;;;;;1133:40:32;;;3602:36:24;3544:94;3443:202;-1:-1:-1;;3443:202:24:o;3011:144:27:-;3056:13;3081:22;-1:-1:-1;;;;;;;;;;;3106:18:27;3081:43;;3141:1;:7;;3134:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3011:144;:::o;5505:186::-;5578:4;966:10:29;5632:31:27;966:10:29;5648:7:27;5657:5;5632:8;:31::i;:::-;-1:-1:-1;5680:4:27;;5505:186;-1:-1:-1;;;5505:186:27:o;6251:244::-;6338:4;966:10:29;6394:37:27;6410:4;966:10:29;6425:5:27;6394:15;:37::i;:::-;6441:26;6451:4;6457:2;6461:5;6441:9;:26::i;:::-;-1:-1:-1;6484:4:27;;6251:244;-1:-1:-1;;;;6251:244:27:o;4759:191:24:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:24;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;3082:112:28:-;3141:7;3167:20;:18;:20::i;:::-;3160:27;;3082:112;:::o;6348:245:24:-;-1:-1:-1;;;;;6441:34:24;;966:10:29;6441:34:24;6437:102;;6498:30;;-1:-1:-1;;;6498:30:24;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;981:342:113:-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;-1:-1:-1;;;;;1072:20:113;::::1;::::0;;::::1;::::0;:46:::1;;-1:-1:-1::0;;;;;;1096:22:113;::::1;::::0;::::1;1072:46;1064:55;;;::::0;::::1;;1129:32;;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:113::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:113::1;;::::0;:12:::1;:32::i;:::-;1171:40;;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:113::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:113::1;;::::0;:23:::1;:40::i;:::-;1221:38;2362:4:24;1252:6:113::0;1221:10:::1;:38::i;:::-;-1:-1:-1::0;1269:47:113::1;1275:8:::0;1299:16:::1;1548:1:::0;1299:2:::1;:16;:::i;:::-;1285:30;::::0;:11:::1;:30;:::i;:::-;1269:5;:47::i;:::-;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;7849:50:138;;5142:14:25;;7837:2:138;7822:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;981:342:113;;:::o;4401:171:27:-;4466:7;;-1:-1:-1;;;;;;;;;;;4510:18:27;-1:-1:-1;;;;;4545:20:27;;;:11;:20;;;;;;;;-1:-1:-1;;4545:20:27;;;;;4401:171::o;2821:154:28:-;2923:7;2949:19;2962:5;2949:12;:19::i;5173:903:31:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:31;;5511:45;;-1:-1:-1;5777:18:31;:43;;;;-1:-1:-1;5799:16:31;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:31;;8112:2:138;5769:77:31;;;8094:21:138;8151:2;8131:18;;;8124:30;-1:-1:-1;;;8170:18:138;;;8163:51;8231:18;;5769:77:31;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:31;;;-1:-1:-1;5857:212:31;;-1:-1:-1;5965:13:31;;-1:-1:-1;6000:4:31;;-1:-1:-1;6027:1:31;-1:-1:-1;6043:16:31;-1:-1:-1;5857:212:31;-1:-1:-1;;5173:903:31:o;3732:207:24:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:24;;;;;;;;-1:-1:-1;;;;;3901:31:24;;;;;;;;;;;;;;;3732:207::o;3268:148:27:-;3400:9;3393:16;;3315:13;;-1:-1:-1;;;;;;;;;;;2359:20:27;3393:16;;;:::i;4767:178::-;4836:4;966:10:29;4890:27:27;966:10:29;4907:2:27;4911:5;4890:9;:27::i;2095:672:28:-;2316:8;2298:15;:26;2294:97;;;2347:33;;-1:-1:-1;;;2347:33:28;;;;;1645:25:138;;;1618:18;;2347:33:28;1499:177:138;2294:97:28;2401:18;1277:95;2460:5;2467:7;2476:5;2483:16;2493:5;-1:-1:-1;;;;;1954:16:30;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2483:16:28;2432:78;;;;;;8679:25:138;;;;-1:-1:-1;;;;;8740:32:138;;;8720:18;;;8713:60;8809:32;;;;8789:18;;;8782:60;8858:18;;;8851:34;8901:19;;;8894:35;8945:19;;;8938:35;;;8651:19;;2432:78:28;;;;;;;;;;;;2422:89;;;;;;2401:110;;2522:12;2537:28;2554:10;2537:16;:28::i;:::-;2522:43;;2576:14;2593:28;2607:4;2613:1;2616;2619;2593:13;:28::i;:::-;2576:45;;2645:5;-1:-1:-1;;;;;2635:15:28;:6;-1:-1:-1;;;;;2635:15:28;;2631:88;;2673:35;;-1:-1:-1;;;2673:35:28;;-1:-1:-1;;;;;9176:32:138;;;2673:35:28;;;9158:51:138;9245:32;;9225:18;;;9218:60;9131:18;;2673:35:28;8984:300:138;2631:88:28;2729:31;2738:5;2745:7;2754:5;2729:8;:31::i;:::-;2284:483;;;2095:672;;;;;;;:::o;5662:138:24:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5003:195:27:-:0;-1:-1:-1;;;;;5162:20:27;;;5083:7;5162:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;5003:195::o;10264:128::-;10348:37;10357:5;10364:7;10373:5;10380:4;10348:8;:37::i;11993:477::-;12092:24;12119:25;12129:5;12136:7;12119:9;:25::i;:::-;12092:52;;-1:-1:-1;;12158:16:27;:37;12154:310;;12234:5;12215:16;:24;12211:130;;;12266:60;;-1:-1:-1;;;12266:60:27;;-1:-1:-1;;;;;9509:32:138;;12266:60:27;;;9491:51:138;9558:18;;;9551:34;;;9601:18;;;9594:34;;;9464:18;;12266:60:27;9289:345:138;12211:130:27;12382:57;12391:5;12398:7;12426:5;12407:16;:24;12433:5;12382:8;:57::i;6868:300::-;-1:-1:-1;;;;;6951:18:27;;6947:86;;6992:30;;-1:-1:-1;;;6992:30:27;;7019:1;6992:30;;;9785:51:138;9758:18;;6992:30:27;9639:203:138;6947:86:27;-1:-1:-1;;;;;7046:16:27;;7042:86;;7085:32;;-1:-1:-1;;;7085:32:27;;7114:1;7085:32;;;9785:51:138;9758:18;;7085:32:27;9639:203:138;7042:86:27;7137:24;7145:4;7151:2;7155:5;7137:7;:24::i;4148:103:24:-;4214:30;4225:4;966:10:29;4214::24;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:24;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:24;;;;;;;;;:38;;-1:-1:-1;;7475:38:24;7509:4;7475:38;;;7559:12;966:10:29;;887:96;7559:12:24;-1:-1:-1;;;;;7532:40:24;7550:7;-1:-1:-1;;;;;7532:40:24;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;4015:109:31;4068:7;4094:23;:21;:23::i;7892:388:24:-;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:24;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:24;;;;;;;;;;:39;;-1:-1:-1;;8097:39:24;;;8155:40;966:10:29;;8097:14:24;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2577:147:27;6931:20:25;:18;:20::i;:::-;2679:38:27::1;2702:5;2709:7;2679:22;:38::i;:::-;2577:147:::0;;:::o;3599:330:31:-;6931:20:25;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:31;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:31::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:31::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:31:o;8996:208:27:-;-1:-1:-1;;;;;9066:21:27;;9062:91;;9110:32;;-1:-1:-1;;;9110:32:27;;9139:1;9110:32;;;9785:51:138;9758:18;;9110:32:27;9639:203:138;9062:91:27;9162:35;9178:1;9182:7;9191:5;9162:7;:35::i;1259:164:30:-;1319:7;;1005:21;1364:19;886:156;6300:155:31;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:31;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:31;2720:156;4946:176;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3555:4:62;3549:11;-1:-1:-1;;;3573:23:62;;3625:4;3616:14;;3609:39;;;;3677:4;3668:14;;3661:34;3733:4;3718:20;;;3353:401;6803:260:61;6888:7;6908:17;6927:18;6947:16;6967:25;6978:4;6984:1;6987;6990;6967:10;:25::i;:::-;6907:85;;;;;;7002:28;7014:5;7021:8;7002:11;:28::i;:::-;-1:-1:-1;7047:9:61;;6803:260;-1:-1:-1;;;;;;6803:260:61:o;11224:487:27:-;-1:-1:-1;;;;;;;;;;;;;;;;11389:19:27;;11385:89;;11431:32;;-1:-1:-1;;;11431:32:27;;11460:1;11431:32;;;9785:51:138;9758:18;;11431:32:27;9639:203:138;11385:89:27;-1:-1:-1;;;;;11487:21:27;;11483:90;;11531:31;;-1:-1:-1;;;11531:31:27;;11559:1;11531:31;;;9785:51:138;9758:18;;11531:31:27;9639:203:138;11483:90:27;-1:-1:-1;;;;;11582:20:27;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11629:76;;;;11679:7;-1:-1:-1;;;;;11663:31:27;11672:5;-1:-1:-1;;;;;11663:31:27;;11688:5;11663:31;;;;1645:25:138;;1633:2;1618:18;;1499:177;11663:31:27;;;;;;;;11629:76;11322:389;11224:487;;;;:::o;7483:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7625:18:27;;7621:546;;7779:5;7761:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7621:546:27;;-1:-1:-1;7621:546:27;;-1:-1:-1;;;;;7837:17:27;;7815:19;7837:17;;;;;;;;;;;7872:19;;;7868:115;;;7918:50;;-1:-1:-1;;;7918:50:27;;-1:-1:-1;;;;;9509:32:138;;7918:50:27;;;9491:51:138;9558:18;;;9551:34;;;9601:18;;;9594:34;;;9464:18;;7918:50:27;9289:345:138;7868:115:27;-1:-1:-1;;;;;8103:17:27;;:11;:17;;;;;;;;;;8123:19;;;;8103:39;;7621:546;-1:-1:-1;;;;;8181:16:27;;8177:429;;8344:14;;;:23;;;;;;;8177:429;;;-1:-1:-1;;;;;8557:15:27;;:11;:15;;;;;;;;;;:24;;;;;;8177:429;8636:2;-1:-1:-1;;;;;8621:25:27;8630:4;-1:-1:-1;;;;;8621:25:27;;8640:5;8621:25;;;;1645::138;;1633:2;1618:18;;1499:177;8621:25:27;;;;;;;;7558:1095;7483:1170;;;:::o;4381:197:24:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:24;;-1:-1:-1;;;;;12293:32:138;;4514:47:24;;;12275:51:138;12342:18;;;12335:34;;;12248:18;;4514:47:24;12101:274:138;4130:191:31;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;12639:25:138;;;;12680:18;;12673:34;;;;12723:18;;;12716:34;4284:13:31;12766:18:138;;;12759:34;4307:4:31;12809:19:138;;;12802:61;12611:19;;4221:92:31;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:25:-;8870:21;8560:40;-1:-1:-1;;;8560:40:25;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:25;;;;;;;;;;;7146:73;7084:141::o;2730:216:27:-;6931:20:25;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2895:7:27;:15:::1;2905:5:::0;2895:7;:15:::1;:::i;:::-;-1:-1:-1::0;2920:9:27::1;::::0;::::1;:19;2932:7:::0;2920:9;:19:::1;:::i;5140:1530:61:-:0;5266:7;;;6199:66;6186:79;;6182:164;;;-1:-1:-1;6297:1:61;;-1:-1:-1;6301:30:61;;-1:-1:-1;6333:1:61;6281:54;;6182:164;6457:24;;;6440:14;6457:24;;;;;;;;;13101:25:138;;;13174:4;13162:17;;13142:18;;;13135:45;;;;13196:18;;;13189:34;;;13239:18;;;13232:34;;;6457:24:61;;13073:19:138;;6457:24:61;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6457:24:61;;-1:-1:-1;;6457:24:61;;;-1:-1:-1;;;;;;;6495:20:61;;6491:113;;-1:-1:-1;6547:1:61;;-1:-1:-1;6551:29:61;;-1:-1:-1;6547:1:61;;-1:-1:-1;6531:62:61;;6491:113;6622:6;-1:-1:-1;6630:20:61;;-1:-1:-1;6630:20:61;;-1:-1:-1;5140:1530:61;;;;;;;;;:::o;7196:532::-;7291:20;7282:5;:29;;;;;;;;:::i;:::-;;7278:444;;7196:532;;:::o;7278:444::-;7387:29;7378:5;:38;;;;;;;;:::i;:::-;;7374:348;;7439:23;;-1:-1:-1;;;7439:23:61;;;;;;;;;;;7374:348;7492:35;7483:5;:44;;;;;;;;:::i;:::-;;7479:243;;7550:46;;-1:-1:-1;;;7550:46:61;;;;;1645:25:138;;;1618:18;;7550:46:61;1499:177:138;7479:243:61;7626:30;7617:5;:39;;;;;;;;:::i;:::-;;7613:109;;7679:32;;-1:-1:-1;;;7679:32:61;;;;;1645:25:138;;;1618:18;;7679:32:61;1499:177:138;7058:687:31;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:31;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:31;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:31:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:31:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:31;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:31;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:31:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:31:o;14:286:138:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:138;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:138:o;497:289::-;539:3;577:5;571:12;604:6;599:3;592:19;660:6;653:4;646:5;642:16;635:4;630:3;626:14;620:47;712:1;705:4;696:6;691:3;687:16;683:27;676:38;775:4;768:2;764:7;759:2;751:6;747:15;743:29;738:3;734:39;730:50;723:57;;;497:289;;;;:::o;791:220::-;940:2;929:9;922:21;903:4;960:45;1001:2;990:9;986:18;978:6;960:45;:::i;1016:173::-;1084:20;;-1:-1:-1;;;;;1133:31:138;;1123:42;;1113:70;;1179:1;1176;1169:12;1113:70;1016:173;;;:::o;1194:300::-;1262:6;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;1362:29;1381:9;1362:29;:::i;:::-;1352:39;1460:2;1445:18;;;;1432:32;;-1:-1:-1;;;1194:300:138:o;1681:374::-;1758:6;1766;1774;1827:2;1815:9;1806:7;1802:23;1798:32;1795:52;;;1843:1;1840;1833:12;1795:52;1866:29;1885:9;1866:29;:::i;:::-;1856:39;;1914:38;1948:2;1937:9;1933:18;1914:38;:::i;:::-;1681:374;;1904:48;;-1:-1:-1;;;2021:2:138;2006:18;;;;1993:32;;1681:374::o;2060:226::-;2119:6;2172:2;2160:9;2151:7;2147:23;2143:32;2140:52;;;2188:1;2185;2178:12;2140:52;-1:-1:-1;2233:23:138;;2060:226;-1:-1:-1;2060:226:138:o;2473:300::-;2541:6;2549;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2663:23;;;-1:-1:-1;2729:38:138;2763:2;2748:18;;2729:38;:::i;:::-;2719:48;;2473:300;;;;;:::o;2967:260::-;3035:6;3043;3096:2;3084:9;3075:7;3071:23;3067:32;3064:52;;;3112:1;3109;3102:12;3064:52;3135:29;3154:9;3135:29;:::i;:::-;3125:39;;3183:38;3217:2;3206:9;3202:18;3183:38;:::i;3232:186::-;3291:6;3344:2;3332:9;3323:7;3319:23;3315:32;3312:52;;;3360:1;3357;3350:12;3312:52;3383:29;3402:9;3383:29;:::i;3423:1238::-;3829:3;3824;3820:13;3812:6;3808:26;3797:9;3790:45;3871:3;3866:2;3855:9;3851:18;3844:31;3771:4;3898:46;3939:3;3928:9;3924:19;3916:6;3898:46;:::i;:::-;3992:9;3984:6;3980:22;3975:2;3964:9;3960:18;3953:50;4026:33;4052:6;4044;4026:33;:::i;:::-;4090:2;4075:18;;4068:34;;;-1:-1:-1;;;;;4139:32:138;;4133:3;4118:19;;4111:61;4159:3;4188:19;;4181:35;;;4253:22;;;4247:3;4232:19;;4225:51;4325:13;;4347:22;;;4397:2;4423:15;;;;-1:-1:-1;4385:15:138;;;;-1:-1:-1;4466:169:138;4480:6;4477:1;4474:13;4466:169;;;4541:13;;4529:26;;4584:2;4610:15;;;;4575:12;;;;4502:1;4495:9;4466:169;;;-1:-1:-1;4652:3:138;;3423:1238;-1:-1:-1;;;;;;;;;;;3423:1238:138:o;4666:903::-;4777:6;4785;4793;4801;4809;4817;4825;4878:3;4866:9;4857:7;4853:23;4849:33;4846:53;;;4895:1;4892;4885:12;4846:53;4918:29;4937:9;4918:29;:::i;:::-;4908:39;;4966:38;5000:2;4989:9;4985:18;4966:38;:::i;:::-;4956:48;-1:-1:-1;5073:2:138;5058:18;;5045:32;;-1:-1:-1;5174:2:138;5159:18;;5146:32;;-1:-1:-1;5256:3:138;5241:19;;5228:33;5305:4;5292:18;;5280:31;;5270:59;;5325:1;5322;5315:12;5270:59;4666:903;;;;-1:-1:-1;4666:903:138;;;;5348:7;5428:3;5413:19;;5400:33;;-1:-1:-1;5532:3:138;5517:19;;;5504:33;;4666:903;-1:-1:-1;;4666:903:138:o;5574:380::-;5653:1;5649:12;;;;5696;;;5717:61;;5771:4;5763:6;5759:17;5749:27;;5717:61;5824:2;5816:6;5813:14;5793:18;5790:38;5787:161;;5870:10;5865:3;5861:20;5858:1;5851:31;5905:4;5902:1;5895:15;5933:4;5930:1;5923:15;5787:161;;5574:380;;;:::o;5959:127::-;6020:10;6015:3;6011:20;6008:1;6001:31;6051:4;6048:1;6041:15;6075:4;6072:1;6065:15;6091:375;6179:1;6197:5;6211:249;6232:1;6222:8;6219:15;6211:249;;;6282:4;6277:3;6273:14;6267:4;6264:24;6261:50;;;6291:18;;:::i;:::-;6341:1;6331:8;6327:16;6324:49;;;6355:16;;;;6324:49;6438:1;6434:16;;;;;6394:15;;6211:249;;;6091:375;;;;;;:::o;6471:902::-;6520:5;6550:8;6540:80;;-1:-1:-1;6591:1:138;6605:5;;6540:80;6639:4;6629:76;;-1:-1:-1;6676:1:138;6690:5;;6629:76;6721:4;6739:1;6734:59;;;;6807:1;6802:174;;;;6714:262;;6734:59;6764:1;6755:10;;6778:5;;;6802:174;6839:3;6829:8;6826:17;6823:43;;;6846:18;;:::i;:::-;-1:-1:-1;;6902:1:138;6888:16;;6961:5;;6714:262;;7060:2;7050:8;7047:16;7041:3;7035:4;7032:13;7028:36;7022:2;7012:8;7009:16;7004:2;6998:4;6995:12;6991:35;6988:77;6985:203;;;-1:-1:-1;7097:19:138;;;7173:5;;6985:203;7220:42;-1:-1:-1;;7245:8:138;7239:4;7220:42;:::i;:::-;7298:6;7294:1;7290:6;7286:19;7277:7;7274:32;7271:58;;;7309:18;;:::i;:::-;7347:20;;6471:902;-1:-1:-1;;;6471:902:138:o;7378:140::-;7436:5;7465:47;7506:4;7496:8;7492:19;7486:4;7465:47;:::i;7523:168::-;7596:9;;;7627;;7644:15;;;7638:22;;7624:37;7614:71;;7665:18;;:::i;8260:127::-;8321:10;8316:3;8312:20;8309:1;8302:31;8352:4;8349:1;8342:15;8376:4;8373:1;8366:15;9973:518;10075:2;10070:3;10067:11;10064:421;;;10111:5;10108:1;10101:16;10155:4;10152:1;10142:18;10225:2;10213:10;10209:19;10206:1;10202:27;10196:4;10192:38;10261:4;10249:10;10246:20;10243:47;;;-1:-1:-1;10284:4:138;10243:47;10339:2;10334:3;10330:12;10327:1;10323:20;10317:4;10313:31;10303:41;;10394:81;10412:2;10405:5;10402:13;10394:81;;;10471:1;10457:16;;10438:1;10427:13;10394:81;;10667:1299;10793:3;10787:10;10820:18;10812:6;10809:30;10806:56;;;10842:18;;:::i;:::-;10871:97;10961:6;10921:38;10953:4;10947:11;10921:38;:::i;:::-;10915:4;10871:97;:::i;:::-;11017:4;11048:2;11037:14;;11065:1;11060:649;;;;11753:1;11770:6;11767:89;;;-1:-1:-1;11822:19:138;;;11816:26;11767:89;-1:-1:-1;;10624:1:138;10620:11;;;10616:24;10612:29;10602:40;10648:1;10644:11;;;10599:57;11869:81;;11030:930;;11060:649;9920:1;9913:14;;;9957:4;9944:18;;-1:-1:-1;;11096:20:138;;;11214:222;11228:7;11225:1;11222:14;11214:222;;;11310:19;;;11304:26;11289:42;;11417:4;11402:20;;;;11370:1;11358:14;;;;11244:12;11214:222;;;11218:3;11464:6;11455:7;11452:19;11449:201;;;11525:19;;;11519:26;-1:-1:-1;;11608:1:138;11604:14;;;11620:3;11600:24;11596:37;11592:42;11577:58;11562:74;;11449:201;-1:-1:-1;;;;11696:1:138;11680:14;;;11676:22;11663:36;;-1:-1:-1;10667:1299:138:o;11971:125::-;12036:9;;;12057:10;;;12054:36;;;12070:18;;:::i;13277:127::-;13338:10;13333:3;13329:20;13326:1;13319:31;13369:4;13366:1;13359:15;13393:4;13390:1;13383:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address)":"485cc955","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":\"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\":[{\"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\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":[],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":[{\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"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.\"}],\"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.\"}]},\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Disables potential implementation exploit\"},\"decimals()\":{\"details\":\"Returns the number of decimals\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address)\":{\"details\":\"Initializes the contract with initial parameters.\",\"params\":{\"_custody\":\"The address of the custody account.\",\"_owner\":\"The address of the owner who receives default admin role.\"}},\"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.\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. 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`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decimals()\":{\"notice\":\"decimals is set to 8, following the Movement network standard decimals\"},\"initialize(address,address)\":{\"notice\":\"The ERC20 token is named \\\"Movement\\\" with symbol \\\"MOVE\\\".EIP712 domain version is set to \\\"1\\\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/MOVEToken.sol\":\"MOVEToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040\",\"dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x8a97653aeba40e9f0c2e8df1a1379b29b927b6dc3534040c668e71ad9ae89d88\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e529c294c9d634eb68a1e4aeb66eb8381de5a08ccd2c0bfeebd48a6b28fcff7\",\"dweb:/ipfs/QmWCezuxfZb68nM3Hs6XzQNNiW7VJsymU4sajy2DW1CKbp\"]},\"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\":\"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78\",\"dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453\",\"dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c\",\"dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c\",\"dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc\",\"dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT\"]},\"src/token/MOVEToken.sol\":{\"keccak256\":\"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a\",\"dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"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":"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":[{"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","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":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","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":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[],"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":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_custody","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"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":[{"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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"}]}],"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"constructor":{"details":"Disables potential implementation exploit"},"decimals()":{"details":"Returns the number of decimals"},"eip712Domain()":{"details":"See {IERC-5267}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address)":{"details":"Initializes the contract with initial parameters.","params":{"_custody":"The address of the custody account.","_owner":"The address of the owner who receives default admin role."}},"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."},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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}. Emits an {Approval} event indicating the updated allowance. This is not required by the EIP. See the note at the beginning of {ERC20}. 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`."}},"version":1},"userdoc":{"kind":"user","methods":{"decimals()":{"notice":"decimals is set to 8, following the Movement network standard decimals"},"initialize(address,address)":{"notice":"The ERC20 token is named \"Movement\" with symbol \"MOVE\".EIP712 domain version is set to \"1\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address."}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/MOVEToken.sol":"MOVEToken"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f","urls":["bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040","dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x8a97653aeba40e9f0c2e8df1a1379b29b927b6dc3534040c668e71ad9ae89d88","urls":["bzz-raw://6e529c294c9d634eb68a1e4aeb66eb8381de5a08ccd2c0bfeebd48a6b28fcff7","dweb:/ipfs/QmWCezuxfZb68nM3Hs6XzQNNiW7VJsymU4sajy2DW1CKbp"],"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":"0x85462422a22578744581e012e9aa0a391958cb360288b0b63f29bf0431d70327","urls":["bzz-raw://2bc529e2b9b28da5d26da451058250d85afcaa3c5083ee273ac68fa6bf956b78","dweb:/ipfs/Qmd3Aq59ztmoVmHigsaR4YjkXWKERVpjfQ4a2PHk7Ke6Rx"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0x55f102ea785d8399c0e58d1108e2d289506dde18abc6db1b7f68c1f9f9bc5792","urls":["bzz-raw://6e52e0a7765c943ef14e5bcf11e46e6139fa044be564881378349236bf2e3453","dweb:/ipfs/QmZEeeXoFPW47amyP35gfzomF9DixqqTEPwzBakv6cZw6i"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xeed0a08b0b091f528356cbc7245891a4c748682d4f6a18055e8e6ca77d12a6cf","urls":["bzz-raw://ba80ba06c8e6be852847e4c5f4492cef801feb6558ae09ed705ff2e04ea8b13c","dweb:/ipfs/QmXRJDv3xHLVQCVXg1ZvR35QS9sij5y9NDWYzMfUfAdTHF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol":{"keccak256":"0xba333517a3add42cd35fe877656fc3dfcc9de53baa4f3aabbd6d12a92e4ea435","urls":["bzz-raw://2ceacff44c0fdc81e48e0e0b1db87a2076d3c1fb497341de077bf1da9f6b406c","dweb:/ipfs/QmRUo1muMRAewxrKQ7TkXUtknyRoR57AyEkoPpiuZQ8FzX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0x5f7e4076e175393767754387c962926577f1660dd9b810187b9002407656be72","urls":["bzz-raw://7d533a1c97cd43a57cd9c465f7ee8dd0e39ae93a8fb8ff8e5303a356b081cdcc","dweb:/ipfs/QmVBEei6aTnvYNZp2CHYVNKyZS4q1KkjANfY39WVXZXVoT"],"license":"MIT"},"src/token/MOVEToken.sol":{"keccak256":"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22","urls":["bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a","dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/token/MOVEToken.sol","id":56986,"exportedSymbols":{"AccessControlUpgradeable":[39385],"ERC20PermitUpgradeable":[40607],"MOVEToken":[56985]},"nodeType":"SourceUnit","src":"32:1526:113","nodes":[{"id":56906,"nodeType":"PragmaDirective","src":"32:24:113","nodes":[],"literals":["solidity","^","0.8",".19"]},{"id":56908,"nodeType":"ImportDirective","src":"58:125:113","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":56986,"sourceUnit":40608,"symbolAliases":[{"foreign":{"id":56907,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40607,"src":"66:22:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56910,"nodeType":"ImportDirective","src":"184:113:113","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","nameLocation":"-1:-1:-1","scope":56986,"sourceUnit":39386,"symbolAliases":[{"foreign":{"id":56909,"name":"AccessControlUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39385,"src":"192:24:113","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":56985,"nodeType":"ContractDefinition","src":"299:1259:113","nodes":[{"id":56922,"nodeType":"FunctionDefinition","src":"447:39:113","nodes":[],"body":{"id":56921,"nodeType":"Block","src":"461:25:113","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":56918,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39607,"src":"462:20:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":56919,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"462:22:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56920,"nodeType":"ExpressionStatement","src":"462:22:113"}]},"documentation":{"id":56915,"nodeType":"StructuredDocumentation","src":"377:65:113","text":" @dev Disables potential implementation exploit"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":56916,"nodeType":"ParameterList","parameters":[],"src":"458:2:113"},"returnParameters":{"id":56917,"nodeType":"ParameterList","parameters":[],"src":"461:0:113"},"scope":56985,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56974,"nodeType":"FunctionDefinition","src":"981:342:113","nodes":[],"body":{"id":56973,"nodeType":"Block","src":"1054:269:113","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":56945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56933,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56925,"src":"1072:6:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":56936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1090:1:113","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":56935,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1082:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56934,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:113","typeDescriptions":{}}},"id":56937,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1082:10:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1072:20:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56939,"name":"_custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56927,"src":"1096:8:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":56942,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:113","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":56941,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1108:7:113","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56940,"name":"address","nodeType":"ElementaryTypeName","src":"1108:7:113","typeDescriptions":{}}},"id":56943,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1108:10:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1096:22:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1072:46:113","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":56932,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1064:7:113","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":56946,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1064:55:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56947,"nodeType":"ExpressionStatement","src":"1064:55:113"},{"expression":{"arguments":[{"hexValue":"4d6f76656d656e74","id":56949,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1142:10:113","typeDescriptions":{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},"value":"Movement"},{"hexValue":"4d4f5645","id":56950,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1154:6:113","typeDescriptions":{"typeIdentifier":"t_stringliteral_94304e8d07ec49123c30284d16c4a1082e90258cc0faf510314d9c3808edcda0","typeString":"literal_string \"MOVE\""},"value":"MOVE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},{"typeIdentifier":"t_stringliteral_94304e8d07ec49123c30284d16c4a1082e90258cc0faf510314d9c3808edcda0","typeString":"literal_string \"MOVE\""}],"id":56948,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39889,"src":"1129:12:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":56951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1129:32:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56952,"nodeType":"ExpressionStatement","src":"1129:32:113"},{"expression":{"arguments":[{"hexValue":"4d6f76656d656e74","id":56954,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1195:10:113","typeDescriptions":{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},"value":"Movement"},{"hexValue":"31","id":56955,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1207:3:113","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":56953,"name":"__EIP712_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40861,"src":"1171:23:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":56956,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1171:40:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56957,"nodeType":"ExpressionStatement","src":"1171:40:113"},{"expression":{"arguments":[{"id":56959,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39051,"src":"1232:18:113","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56960,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56925,"src":"1252:6:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56958,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39338,"src":"1221:10:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":56961,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1221:38:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56962,"nodeType":"ExpressionStatement","src":"1221:38:113"},{"expression":{"arguments":[{"id":56964,"name":"_custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56927,"src":"1275:8:113","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56970,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130303030303030303030","id":56965,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1285:11:113","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"10000000000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":56966,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1299:2:113","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":56967,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[56984],"referencedDeclaration":56984,"src":"1305:8:113","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":56968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:10:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1299:16:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1285:30:113","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56963,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40270,"src":"1269:5:113","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56971,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1269:47:113","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56972,"nodeType":"ExpressionStatement","src":"1269:47:113"}]},"documentation":{"id":56923,"nodeType":"StructuredDocumentation","src":"492:484:113","text":" @dev Initializes the contract with initial parameters.\n @param _owner The address of the owner who receives default admin role.\n @param _custody The address of the custody account.\n @notice The ERC20 token is named \"Movement\" with symbol \"MOVE\".\n @notice EIP712 domain version is set to \"1\" for signatures.\n @notice The owner is granted the `DEFAULT_ADMIN_ROLE`.\n @notice 10 billion MOVE tokens are minted to the owner's address."},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":56930,"kind":"modifierInvocation","modifierName":{"id":56929,"name":"initializer","nameLocations":["1042:11:113"],"nodeType":"IdentifierPath","referencedDeclaration":39493,"src":"1042:11:113"},"nodeType":"ModifierInvocation","src":"1042:11:113"}],"name":"initialize","nameLocation":"990:10:113","parameters":{"id":56928,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56925,"mutability":"mutable","name":"_owner","nameLocation":"1009:6:113","nodeType":"VariableDeclaration","scope":56974,"src":"1001:14:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56924,"name":"address","nodeType":"ElementaryTypeName","src":"1001:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56927,"mutability":"mutable","name":"_custody","nameLocation":"1025:8:113","nodeType":"VariableDeclaration","scope":56974,"src":"1017:16:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56926,"name":"address","nodeType":"ElementaryTypeName","src":"1017:7:113","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1000:34:113"},"returnParameters":{"id":56931,"nodeType":"ParameterList","parameters":[],"src":"1054:0:113"},"scope":56985,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56984,"nodeType":"FunctionDefinition","src":"1474:82:113","nodes":[],"body":{"id":56983,"nodeType":"Block","src":"1531:25:113","nodes":[],"statements":[{"expression":{"hexValue":"38","id":56981,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1548:1:113","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"functionReturnParameters":56980,"id":56982,"nodeType":"Return","src":"1541:8:113"}]},"baseFunctions":[39958],"documentation":{"id":56975,"nodeType":"StructuredDocumentation","src":"1329:140:113","text":" @dev Returns the number of decimals\n @notice decimals is set to 8, following the Movement network standard decimals"},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1483:8:113","overrides":{"id":56977,"nodeType":"OverrideSpecifier","overrides":[],"src":"1506:8:113"},"parameters":{"id":56976,"nodeType":"ParameterList","parameters":[],"src":"1491:2:113"},"returnParameters":{"id":56980,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56979,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":56984,"src":"1524:5:113","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":56978,"name":"uint8","nodeType":"ElementaryTypeName","src":"1524:5:113","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1523:7:113"},"scope":56985,"stateMutability":"pure","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":56911,"name":"ERC20PermitUpgradeable","nameLocations":["321:22:113"],"nodeType":"IdentifierPath","referencedDeclaration":40607,"src":"321:22:113"},"id":56912,"nodeType":"InheritanceSpecifier","src":"321:22:113"},{"baseName":{"id":56913,"name":"AccessControlUpgradeable","nameLocations":["345:24:113"],"nodeType":"IdentifierPath","referencedDeclaration":39385,"src":"345:24:113"},"id":56914,"nodeType":"InheritanceSpecifier","src":"345:24:113"}],"canonicalName":"MOVEToken","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[56985,39385,41148,45235,41527,40607,40764,41108,42745,43725,40438,42797,43689,43663,40653,39639],"name":"MOVEToken","nameLocation":"308:9:113","scope":56986,"usedErrors":[39402,39405,40473,40480,40667,41454,41457,42767,42772,42777,42786,42791,42796,44788,44793,44798],"usedEvents":[39410,41466,41475,41484,42725,43597,43606]}],"license":"MIT"},"id":113} \ No newline at end of file diff --git a/protocol/mcr/cli/client/abis/MovementStaking.json b/protocol/mcr/cli/client/abis/MovementStaking.json new file mode 100644 index 00000000..9b822a63 --- /dev/null +++ b/protocol/mcr/cli/client/abis/MovementStaking.json @@ -0,0 +1 @@ +{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","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":"WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"currentEpochByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"currentEpoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"domainGenesisAccepted","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochDurationByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochStakesByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochTotalStakeByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"epochUnstakesByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttestersByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getCurrentEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentEpochStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCurrentEpochUnstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodiansByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getEpochByBlockTime","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextEpochByBlockTime","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStakeAtEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForCurrentEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnstakeAtEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerDomain","inputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAddressFromWhitelist","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"reward","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollOverEpoch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"custodians","type":"address[]","internalType":"address[]"},{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"refundAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"unstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"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":"whitelistAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AttesterEpochRolledOver","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterStaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterUnstaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EpochRolledOver","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CustodianTransferAmountMismatch","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedInnerCall","inputs":[]},{"type":"error","name":"GenesisAlreadyAccepted","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"StakeExceedsGenesisStake","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a0604052306080523480156012575f80fd5b50600160095560805161292661003e5f395f81816117b2015281816117db015261192101526129265ff3fe60806040526004361061023e575f3560e01c80637a997ab711610134578063ad3cb1cc116100b3578063d1ba90ff11610078578063d1ba90ff1461073a578063d37304f814610768578063d547741f14610787578063d5ca03de146107a6578063da33ee7f146107c5578063fc0c546a146107e4575f80fd5b8063ad3cb1cc1461065b578063bf6eac2f14610698578063c0b95ab8146106b7578063c3471ff8146106fc578063c4d66de81461071b575f80fd5b806391d14854116100f957806391d14854146105e257806392a2ebf314610601578063a217fddf14610615578063a885c97514610628578063a887b71c14610647575f80fd5b80637a997ab7146105515780638129fc1c146105715780638489e58014610585578063879b938b146105a45780638d908258146105c3575f80fd5b806344198e4d116101c05780635cdf3155116101855780635cdf31551461046357806360829f8a146104af57806365f1ea20146104ce57806370224360146105135780637667b76d14610532575f80fd5b806344198e4d146103c25780634d3223a5146103e15780634f1ef2861461040057806352d1902d1461041357806354300d7a14610427575f80fd5b80632c7785a8116102065780632c7785a81461031b5780632f2ff15d1461033a57806336568abe146103595780633bccf6351461037857806341566585146103a3575f80fd5b806301ffc9a7146102425780630a0b1b6414610276578063248a9ca3146102af578063286dd3f5146102ce5780632924b73b146102ef575b5f80fd5b34801561024d575f80fd5b5061026161025c3660046122bb565b61081a565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b506102a16102903660046122f6565b60026020525f908152604090205481565b60405190815260200161026d565b3480156102ba575f80fd5b506102a16102c9366004612311565b610850565b3480156102d9575f80fd5b506102ed6102e83660046122f6565b610870565b005b3480156102fa575f80fd5b5061030e6103093660046122f6565b610895565b60405161026d9190612328565b348015610326575f80fd5b506102a16103353660046122f6565b61097f565b348015610345575f80fd5b506102ed610354366004612373565b6109ae565b348015610364575f80fd5b506102ed610373366004612373565b6109d0565b348015610383575f80fd5b506102a16103923660046122f6565b60016020525f908152604090205481565b3480156103ae575f80fd5b506102ed6103bd3660046122f6565b610a08565b3480156103cd575f80fd5b506102a16103dc3660046123a1565b610a29565b3480156103ec575f80fd5b506102a16103fb3660046122f6565b610a71565b6102ed61040e3660046123e1565b610a8b565b34801561041e575f80fd5b506102a1610aa6565b348015610432575f80fd5b506102a16104413660046124a4565b600760209081525f938452604080852082529284528284209052825290205481565b34801561046e575f80fd5b506102a161047d3660046124a4565b6001600160a01b039283165f908152600760209081526040808320948352938152838220929094168152925290205490565b3480156104ba575f80fd5b506102ed6104c93660046124e3565b610ac1565b3480156104d9575f80fd5b506102a16104e8366004612521565b600660209081525f948552604080862082529385528385208152918452828420909152825290205481565b34801561051e575f80fd5b506102a161052d366004612571565b610b56565b34801561053d575f80fd5b506102a161054c366004612571565b610b73565b34801561055c575f80fd5b506102a15f8051602061289183398151915281565b34801561057c575f80fd5b506102ed610b88565b348015610590575f80fd5b506102a161059f3660046122f6565b610c92565b3480156105af575f80fd5b506102a16105be366004612521565b610caa565b3480156105ce575f80fd5b506102a16105dd366004612521565b610ce7565b3480156105ed575f80fd5b506102616105fc366004612373565b610d24565b34801561060c575f80fd5b506102ed610d5a565b348015610620575f80fd5b506102a15f81565b348015610633575f80fd5b506102ed6106423660046125f5565b610eb4565b348015610652575f80fd5b506102ed6110d6565b348015610666575f80fd5b5061068b604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161026d91906126bf565b3480156106a3575f80fd5b506102ed6106b23660046124e3565b6110e8565b3480156106c2575f80fd5b506102a16106d1366004612521565b600560209081525f948552604080862082529385528385208152918452828420909152825290205481565b348015610707575f80fd5b506102a16107163660046122f6565b611313565b348015610726575f80fd5b506102ed6107353660046122f6565b611335565b348015610745575f80fd5b506102616107543660046122f6565b60086020525f908152604090205460ff1681565b348015610773575f80fd5b506102ed6107823660046126f4565b61145a565b348015610792575f80fd5b506102ed6107a1366004612373565b6114d8565b3480156107b1575f80fd5b5061030e6107c03660046122f6565b6114f4565b3480156107d0575f80fd5b506102ed6107df36600461273b565b6115d7565b3480156107ef575f80fd5b505f54610802906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b5f6001600160e01b03198216637965db0b60e01b148061084a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f9081525f805160206128d1833981519152602052604090206001015490565b5f61087a8161166c565b6108915f80516020612891833981519152836114d8565b5050565b6001600160a01b0381165f908152600360205260408120606091906108b990611679565b6001600160401b038111156108d0576108d06123cd565b6040519080825280602002602001820160405280156108f9578160200160208202803683370190505b5090505f5b6001600160a01b0384165f90815260036020526040902061091e90611679565b811015610978576001600160a01b0384165f9081526003602052604090206109469082611682565b828281518110610958576109586127d7565b6001600160a01b03909216602092830291909101909101526001016108fe565b5092915050565b5f61098982610a71565b156109a75761099782611313565b6109a29060016127ff565b61084a565b5f92915050565b6109b782610850565b6109c08161166c565b6109ca838361168d565b50505050565b6001600160a01b03811633146109f95760405163334bd91960e11b815260040160405180910390fd5b610a03828261172e565b505050565b5f610a128161166c565b6108915f80516020612891833981519152836109ae565b5f610a6a83610a3785610a71565b846001600160a01b039283165f908152600760209081526040808320948352938152838220929094168152925290205490565b9392505050565b6001600160a01b03165f9081526002602052604090205490565b610a936117a7565b610a9c8261184b565b6108918282611855565b5f610aaf611916565b505f805160206128b183398151915290565b5f80516020612891833981519152610ad88161166c565b610ae061195f565b610af584610aed8661097f565b853386611989565b826001600160a01b0316610b0885610c92565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a46109ca6001600955565b5f610b6b84610b6486610a71565b8585610ce7565b949350505050565b5f610b6b84610b8186610a71565b8585610caa565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcc5750825b90505f826001600160401b03166001148015610be75750303b155b905081158015610bf5575080155b15610c135760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3d57845460ff60401b1916600160401b1785555b610c456119dd565b8315610c8b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f610c9c82610a71565b156109a75761099782610a71565b6001600160a01b039384165f9081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6001600160a01b039384165f9081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b5f9182525f805160206128d1833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610d6261195f565b335f8181526008602052604090205460ff1615610d915760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381165f908152600860205260409020805460ff19166001179055610dbc81611313565b6001600160a01b0382165f908152600260205260408120919091555b6001600160a01b0382165f908152600360205260409020610df890611679565b811015610ea6576001600160a01b0382165f908152600360205260408120610e209083611682565b90505f5b6001600160a01b0384165f908152600460205260409020610e4490611679565b811015610e9c576001600160a01b0384165f908152600460205260408120610e6c9083611682565b90505f610e7b865f8487610ce7565b9050610e9286610e8a88610a71565b8487856119ed565b5050600101610e24565b5050600101610dd8565b5050610eb26001600955565b565b610ebc61195f565b5f5b858110156110c1575f610f85610f4633610ef88b8b87818110610ee357610ee36127d7565b90506020020160208101906103fb91906122f6565b8d8d87818110610f0a57610f0a6127d7565b9050602002016020810190610f1f91906122f6565b8c8c88818110610f3157610f316127d7565b90506020020160208101906105dd91906122f6565b610f80888886818110610f5b57610f5b6127d7565b90506020020135878787818110610f7457610f746127d7565b90506020020135611a78565b611a78565b9050610fdf30898985818110610f9d57610f9d6127d7565b9050602002016020810190610fb291906122f6565b8c8c86818110610fc457610fc46127d7565b9050602002016020810190610fd991906122f6565b84611a8d565b61105833610fec33610a71565b8c8c86818110610ffe57610ffe6127d7565b905060200201602081019061101391906122f6565b8b8b87818110611025576110256127d7565b905060200201602081019061103a91906122f6565b8a8a8881811061104c5761104c6127d7565b90506020020135611cb6565b6110b83361106533610a71565b8c8c86818110611077576110776127d7565b905060200201602081019061108c91906122f6565b8b8b8781811061109e5761109e6127d7565b90506020020160208101906110b391906122f6565b611cf6565b50600101610ebe565b506110cc6001600955565b5050505050505050565b610eb2336110e333610a71565b611d68565b5f805160206128918339815191526110ff8161166c565b61110761195f565b6001600160a01b0384165f9081526003602052604090206111289033611e85565b505f80546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561116f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111939190612812565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303815f875af11580156111e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120a9190612829565b5061121583826127ff565b5f546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561125a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127e9190612812565b1461129c57604051631910d68360e21b815260040160405180910390fd5b6112b1856112a98761097f565b8633876119ed565b836001600160a01b03166112c486610c92565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a4506109ca6001600955565b6001600160a01b0381165f9081526001602052604081205461084a9042612848565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156113795750825b90505f826001600160401b031660011480156113945750303b155b9050811580156113a2575080155b156113c05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156113ea57845460ff60401b1916600160401b1785555b6113f2611e99565b5f80546001600160a01b0319166001600160a01b038816179055831561145257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b61146261195f565b335f8181526001602052604081208590555b828110156114cc576114c3848483818110611491576114916127d7565b90506020020160208101906114a691906122f6565b6001600160a01b0384165f90815260046020526040902090611e85565b50600101611474565b5050610a036001600955565b6114e182610850565b6114ea8161166c565b6109ca838361172e565b6001600160a01b0381165f9081526004602052604081206060919061151890611679565b6001600160401b0381111561152f5761152f6123cd565b604051908082528060200260200182016040528015611558578160200160208202803683370190505b5090505f5b6001600160a01b0384165f90815260046020526040902061157d90611679565b811015610978576001600160a01b0384165f9081526004602052604090206115a59082611682565b8282815181106115b7576115b76127d7565b6001600160a01b039092166020928302919091019091015260010161155d565b6115df61195f565b5f5b8581101561166157611659338888848181106115ff576115ff6127d7565b905060200201602081019061161491906122f6565b858585818110611626576116266127d7565b905060200201602081019061163b91906122f6565b88888681811061164d5761164d6127d7565b90506020020135611a8d565b6001016115e1565b506114526001600955565b6116768133611eab565b50565b5f61084a825490565b5f610a6a8383611ee4565b5f5f805160206128d18339815191526116a68484610d24565b611725575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556116db3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061084a565b5f91505061084a565b5f5f805160206128d18339815191526117478484610d24565b15611725575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061084a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061182d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118215f805160206128b1833981519152546001600160a01b031690565b6001600160a01b031614155b15610eb25760405163703e46dd60e11b815260040160405180910390fd5b5f6108918161166c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118af575060408051601f3d908101601f191682019092526118ac91810190612812565b60015b6118dc57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f805160206128b1833981519152811461190c57604051632a87526960e21b8152600481018290526024016118d3565b610a038383611f0a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb25760405163703e46dd60e11b815260040160405180910390fd5b60026009540361198257604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b6001600160a01b038086165f908152600660209081526040808320888452825280832087851684528252808320938616835292905290812080548392906119d19084906127ff565b90915550505050505050565b6119e5611f5f565b610eb2611e99565b6001600160a01b038086165f90815260056020908152604080832088845282528083208785168452825280832093861683529290529081208054839290611a359084906127ff565b90915550506001600160a01b038086165f9081526007602090815260408083208884528252808320938716835292905290812080548392906119d19084906127ff565b5f818310611a865781610a6a565b5090919050565b306001600160a01b03851603611c01575f546001600160a01b03808416911603611b2b575f5460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015b6020604051808303815f875af1158015611b01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b259190612829565b506109ca565b5f5460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af1158015611b7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b9e9190612829565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015f604051808303815f87803b158015611be6575f80fd5b505af1158015611bf8573d5f803e3d5ffd5b505050506109ca565b5f546001600160a01b03808416911603611c55575f546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd90606401611ae5565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d83906064015f604051808303815f87803b158015611ca4575f80fd5b505af11580156110cc573d5f803e3d5ffd5b835f611cc487838787610ce7565b905082811015611ce057611cdb8783878785611fa8565b611ced565b611ced8783878787611fa8565b50505050505050565b5f611d0385858585610ce7565b90505f611d118560016127ff565b90505f611d2087838787610caa565b905082811115611ced576001600160a01b038088165f9081526006602090815260408083208684528252808320848a1684528252808320938816835292905220839055611ced565b5f5b6001600160a01b0383165f908152600360205260409020611d8a90611679565b811015611e1f576001600160a01b0383165f908152600360205260408120611db29083611682565b90505f5b6001600160a01b0385165f908152600460205260409020611dd690611679565b811015611e15576001600160a01b0385165f908152600460205260408120611dfe9083611682565b9050611e0c86868386612033565b50600101611db6565b5050600101611d6a565b50611e2b8160016127ff565b6001600160a01b0383165f81815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc4190611e799084815260200190565b60405180910390a25050565b5f610a6a836001600160a01b0384166120f6565b611ea1611f5f565b6116765f3361168d565b611eb58282610d24565b6108915760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016118d3565b5f825f018281548110611ef957611ef96127d7565b905f5260205f200154905092915050565b611f1382612142565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611f5757610a0382826121a5565b610891612217565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610eb257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b038086165f90815260056020908152604080832088845282528083208785168452825280832093861683529290529081208054839290611ff0908490612867565b90915550506001600160a01b038086165f9081526007602090815260408083208884528252808320938716835292905290812080548392906119d1908490612867565b5f61204085858585610ce7565b90505f612059866120528760016127ff565b8686610caa565b9050818111156120665750805b5f6120718284612867565b905061208a876120828860016127ff565b8787856119ed565b61209630858785611a8d565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516120e5929190918252602082015260400190565b60405180910390a450505050505050565b5f81815260018301602052604081205461213b57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561084a565b505f61084a565b806001600160a01b03163b5f0361217757604051634c9c8ce360e01b81526001600160a01b03821660048201526024016118d3565b5f805160206128b183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516121c1919061287a565b5f60405180830381855af49150503d805f81146121f9576040519150601f19603f3d011682016040523d82523d5f602084013e6121fe565b606091505b509150915061220e858383612236565b95945050505050565b3415610eb25760405163b398979f60e01b815260040160405180910390fd5b60608261224b5761224682612292565b610a6a565b815115801561226257506001600160a01b0384163b155b1561228b57604051639996b31560e01b81526001600160a01b03851660048201526024016118d3565b5080610a6a565b8051156122a25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156122cb575f80fd5b81356001600160e01b031981168114610a6a575f80fd5b6001600160a01b0381168114611676575f80fd5b5f60208284031215612306575f80fd5b8135610a6a816122e2565b5f60208284031215612321575f80fd5b5035919050565b602080825282518282018190525f918401906040840190835b818110156123685783516001600160a01b0316835260209384019390920191600101612341565b509095945050505050565b5f8060408385031215612384575f80fd5b823591506020830135612396816122e2565b809150509250929050565b5f80604083850312156123b2575f80fd5b82356123bd816122e2565b91506020830135612396816122e2565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156123f2575f80fd5b82356123fd816122e2565b915060208301356001600160401b03811115612417575f80fd5b8301601f81018513612427575f80fd5b80356001600160401b03811115612440576124406123cd565b604051601f8201601f19908116603f011681016001600160401b038111828210171561246e5761246e6123cd565b604052818152828201602001871015612485575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f805f606084860312156124b6575f80fd5b83356124c1816122e2565b92506020840135915060408401356124d8816122e2565b809150509250925092565b5f805f606084860312156124f5575f80fd5b8335612500816122e2565b92506020840135612510816122e2565b929592945050506040919091013590565b5f805f8060808587031215612534575f80fd5b843561253f816122e2565b9350602085013592506040850135612556816122e2565b91506060850135612566816122e2565b939692955090935050565b5f805f60608486031215612583575f80fd5b833561258e816122e2565b9250602084013561259e816122e2565b915060408401356124d8816122e2565b5f8083601f8401126125be575f80fd5b5081356001600160401b038111156125d4575f80fd5b6020830191508360208260051b85010111156125ee575f80fd5b9250929050565b5f805f805f805f806080898b03121561260c575f80fd5b88356001600160401b03811115612621575f80fd5b61262d8b828c016125ae565b90995097505060208901356001600160401b0381111561264b575f80fd5b6126578b828c016125ae565b90975095505060408901356001600160401b03811115612675575f80fd5b6126818b828c016125ae565b90955093505060608901356001600160401b0381111561269f575f80fd5b6126ab8b828c016125ae565b999c989b5096995094979396929594505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f60408486031215612706575f80fd5b8335925060208401356001600160401b03811115612722575f80fd5b61272e868287016125ae565b9497909650939450505050565b5f805f805f8060608789031215612750575f80fd5b86356001600160401b03811115612765575f80fd5b61277189828a016125ae565b90975095505060208701356001600160401b0381111561278f575f80fd5b61279b89828a016125ae565b90955093505060408701356001600160401b038111156127b9575f80fd5b6127c589828a016125ae565b979a9699509497509295939492505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561084a5761084a6127eb565b5f60208284031215612822575f80fd5b5051919050565b5f60208284031215612839575f80fd5b81518015158114610a6a575f80fd5b5f8261286257634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561084a5761084a6127eb565b5f82518060208501845e5f92019182525091905056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220f89cd60db1a241d5973d2920b5637bf68cceb132f2c25bc4d7a85f8d1390562e64736f6c634300081a0033","sourceMap":"651:18019:109:-:0;;;1171:4:26;1128:48;;651:18019:109;;;;;;;;;-1:-1:-1;1713:1:58;1917:7;:21;651:18019:109;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x60806040526004361061023e575f3560e01c80637a997ab711610134578063ad3cb1cc116100b3578063d1ba90ff11610078578063d1ba90ff1461073a578063d37304f814610768578063d547741f14610787578063d5ca03de146107a6578063da33ee7f146107c5578063fc0c546a146107e4575f80fd5b8063ad3cb1cc1461065b578063bf6eac2f14610698578063c0b95ab8146106b7578063c3471ff8146106fc578063c4d66de81461071b575f80fd5b806391d14854116100f957806391d14854146105e257806392a2ebf314610601578063a217fddf14610615578063a885c97514610628578063a887b71c14610647575f80fd5b80637a997ab7146105515780638129fc1c146105715780638489e58014610585578063879b938b146105a45780638d908258146105c3575f80fd5b806344198e4d116101c05780635cdf3155116101855780635cdf31551461046357806360829f8a146104af57806365f1ea20146104ce57806370224360146105135780637667b76d14610532575f80fd5b806344198e4d146103c25780634d3223a5146103e15780634f1ef2861461040057806352d1902d1461041357806354300d7a14610427575f80fd5b80632c7785a8116102065780632c7785a81461031b5780632f2ff15d1461033a57806336568abe146103595780633bccf6351461037857806341566585146103a3575f80fd5b806301ffc9a7146102425780630a0b1b6414610276578063248a9ca3146102af578063286dd3f5146102ce5780632924b73b146102ef575b5f80fd5b34801561024d575f80fd5b5061026161025c3660046122bb565b61081a565b60405190151581526020015b60405180910390f35b348015610281575f80fd5b506102a16102903660046122f6565b60026020525f908152604090205481565b60405190815260200161026d565b3480156102ba575f80fd5b506102a16102c9366004612311565b610850565b3480156102d9575f80fd5b506102ed6102e83660046122f6565b610870565b005b3480156102fa575f80fd5b5061030e6103093660046122f6565b610895565b60405161026d9190612328565b348015610326575f80fd5b506102a16103353660046122f6565b61097f565b348015610345575f80fd5b506102ed610354366004612373565b6109ae565b348015610364575f80fd5b506102ed610373366004612373565b6109d0565b348015610383575f80fd5b506102a16103923660046122f6565b60016020525f908152604090205481565b3480156103ae575f80fd5b506102ed6103bd3660046122f6565b610a08565b3480156103cd575f80fd5b506102a16103dc3660046123a1565b610a29565b3480156103ec575f80fd5b506102a16103fb3660046122f6565b610a71565b6102ed61040e3660046123e1565b610a8b565b34801561041e575f80fd5b506102a1610aa6565b348015610432575f80fd5b506102a16104413660046124a4565b600760209081525f938452604080852082529284528284209052825290205481565b34801561046e575f80fd5b506102a161047d3660046124a4565b6001600160a01b039283165f908152600760209081526040808320948352938152838220929094168152925290205490565b3480156104ba575f80fd5b506102ed6104c93660046124e3565b610ac1565b3480156104d9575f80fd5b506102a16104e8366004612521565b600660209081525f948552604080862082529385528385208152918452828420909152825290205481565b34801561051e575f80fd5b506102a161052d366004612571565b610b56565b34801561053d575f80fd5b506102a161054c366004612571565b610b73565b34801561055c575f80fd5b506102a15f8051602061289183398151915281565b34801561057c575f80fd5b506102ed610b88565b348015610590575f80fd5b506102a161059f3660046122f6565b610c92565b3480156105af575f80fd5b506102a16105be366004612521565b610caa565b3480156105ce575f80fd5b506102a16105dd366004612521565b610ce7565b3480156105ed575f80fd5b506102616105fc366004612373565b610d24565b34801561060c575f80fd5b506102ed610d5a565b348015610620575f80fd5b506102a15f81565b348015610633575f80fd5b506102ed6106423660046125f5565b610eb4565b348015610652575f80fd5b506102ed6110d6565b348015610666575f80fd5b5061068b604051806040016040528060058152602001640352e302e360dc1b81525081565b60405161026d91906126bf565b3480156106a3575f80fd5b506102ed6106b23660046124e3565b6110e8565b3480156106c2575f80fd5b506102a16106d1366004612521565b600560209081525f948552604080862082529385528385208152918452828420909152825290205481565b348015610707575f80fd5b506102a16107163660046122f6565b611313565b348015610726575f80fd5b506102ed6107353660046122f6565b611335565b348015610745575f80fd5b506102616107543660046122f6565b60086020525f908152604090205460ff1681565b348015610773575f80fd5b506102ed6107823660046126f4565b61145a565b348015610792575f80fd5b506102ed6107a1366004612373565b6114d8565b3480156107b1575f80fd5b5061030e6107c03660046122f6565b6114f4565b3480156107d0575f80fd5b506102ed6107df36600461273b565b6115d7565b3480156107ef575f80fd5b505f54610802906001600160a01b031681565b6040516001600160a01b03909116815260200161026d565b5f6001600160e01b03198216637965db0b60e01b148061084a57506301ffc9a760e01b6001600160e01b03198316145b92915050565b5f9081525f805160206128d1833981519152602052604090206001015490565b5f61087a8161166c565b6108915f80516020612891833981519152836114d8565b5050565b6001600160a01b0381165f908152600360205260408120606091906108b990611679565b6001600160401b038111156108d0576108d06123cd565b6040519080825280602002602001820160405280156108f9578160200160208202803683370190505b5090505f5b6001600160a01b0384165f90815260036020526040902061091e90611679565b811015610978576001600160a01b0384165f9081526003602052604090206109469082611682565b828281518110610958576109586127d7565b6001600160a01b03909216602092830291909101909101526001016108fe565b5092915050565b5f61098982610a71565b156109a75761099782611313565b6109a29060016127ff565b61084a565b5f92915050565b6109b782610850565b6109c08161166c565b6109ca838361168d565b50505050565b6001600160a01b03811633146109f95760405163334bd91960e11b815260040160405180910390fd5b610a03828261172e565b505050565b5f610a128161166c565b6108915f80516020612891833981519152836109ae565b5f610a6a83610a3785610a71565b846001600160a01b039283165f908152600760209081526040808320948352938152838220929094168152925290205490565b9392505050565b6001600160a01b03165f9081526002602052604090205490565b610a936117a7565b610a9c8261184b565b6108918282611855565b5f610aaf611916565b505f805160206128b183398151915290565b5f80516020612891833981519152610ad88161166c565b610ae061195f565b610af584610aed8661097f565b853386611989565b826001600160a01b0316610b0885610c92565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a46109ca6001600955565b5f610b6b84610b6486610a71565b8585610ce7565b949350505050565b5f610b6b84610b8186610a71565b8585610caa565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bcc5750825b90505f826001600160401b03166001148015610be75750303b155b905081158015610bf5575080155b15610c135760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c3d57845460ff60401b1916600160401b1785555b610c456119dd565b8315610c8b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f610c9c82610a71565b156109a75761099782610a71565b6001600160a01b039384165f9081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6001600160a01b039384165f9081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b5f9182525f805160206128d1833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610d6261195f565b335f8181526008602052604090205460ff1615610d915760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381165f908152600860205260409020805460ff19166001179055610dbc81611313565b6001600160a01b0382165f908152600260205260408120919091555b6001600160a01b0382165f908152600360205260409020610df890611679565b811015610ea6576001600160a01b0382165f908152600360205260408120610e209083611682565b90505f5b6001600160a01b0384165f908152600460205260409020610e4490611679565b811015610e9c576001600160a01b0384165f908152600460205260408120610e6c9083611682565b90505f610e7b865f8487610ce7565b9050610e9286610e8a88610a71565b8487856119ed565b5050600101610e24565b5050600101610dd8565b5050610eb26001600955565b565b610ebc61195f565b5f5b858110156110c1575f610f85610f4633610ef88b8b87818110610ee357610ee36127d7565b90506020020160208101906103fb91906122f6565b8d8d87818110610f0a57610f0a6127d7565b9050602002016020810190610f1f91906122f6565b8c8c88818110610f3157610f316127d7565b90506020020160208101906105dd91906122f6565b610f80888886818110610f5b57610f5b6127d7565b90506020020135878787818110610f7457610f746127d7565b90506020020135611a78565b611a78565b9050610fdf30898985818110610f9d57610f9d6127d7565b9050602002016020810190610fb291906122f6565b8c8c86818110610fc457610fc46127d7565b9050602002016020810190610fd991906122f6565b84611a8d565b61105833610fec33610a71565b8c8c86818110610ffe57610ffe6127d7565b905060200201602081019061101391906122f6565b8b8b87818110611025576110256127d7565b905060200201602081019061103a91906122f6565b8a8a8881811061104c5761104c6127d7565b90506020020135611cb6565b6110b83361106533610a71565b8c8c86818110611077576110776127d7565b905060200201602081019061108c91906122f6565b8b8b8781811061109e5761109e6127d7565b90506020020160208101906110b391906122f6565b611cf6565b50600101610ebe565b506110cc6001600955565b5050505050505050565b610eb2336110e333610a71565b611d68565b5f805160206128918339815191526110ff8161166c565b61110761195f565b6001600160a01b0384165f9081526003602052604090206111289033611e85565b505f80546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561116f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111939190612812565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303815f875af11580156111e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061120a9190612829565b5061121583826127ff565b5f546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa15801561125a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061127e9190612812565b1461129c57604051631910d68360e21b815260040160405180910390fd5b6112b1856112a98761097f565b8633876119ed565b836001600160a01b03166112c486610c92565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a4506109ca6001600955565b6001600160a01b0381165f9081526001602052604081205461084a9042612848565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156113795750825b90505f826001600160401b031660011480156113945750303b155b9050811580156113a2575080155b156113c05760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156113ea57845460ff60401b1916600160401b1785555b6113f2611e99565b5f80546001600160a01b0319166001600160a01b038816179055831561145257845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050565b61146261195f565b335f8181526001602052604081208590555b828110156114cc576114c3848483818110611491576114916127d7565b90506020020160208101906114a691906122f6565b6001600160a01b0384165f90815260046020526040902090611e85565b50600101611474565b5050610a036001600955565b6114e182610850565b6114ea8161166c565b6109ca838361172e565b6001600160a01b0381165f9081526004602052604081206060919061151890611679565b6001600160401b0381111561152f5761152f6123cd565b604051908082528060200260200182016040528015611558578160200160208202803683370190505b5090505f5b6001600160a01b0384165f90815260046020526040902061157d90611679565b811015610978576001600160a01b0384165f9081526004602052604090206115a59082611682565b8282815181106115b7576115b76127d7565b6001600160a01b039092166020928302919091019091015260010161155d565b6115df61195f565b5f5b8581101561166157611659338888848181106115ff576115ff6127d7565b905060200201602081019061161491906122f6565b858585818110611626576116266127d7565b905060200201602081019061163b91906122f6565b88888681811061164d5761164d6127d7565b90506020020135611a8d565b6001016115e1565b506114526001600955565b6116768133611eab565b50565b5f61084a825490565b5f610a6a8383611ee4565b5f5f805160206128d18339815191526116a68484610d24565b611725575f848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556116db3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061084a565b5f91505061084a565b5f5f805160206128d18339815191526117478484610d24565b15611725575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061084a565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061182d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118215f805160206128b1833981519152546001600160a01b031690565b6001600160a01b031614155b15610eb25760405163703e46dd60e11b815260040160405180910390fd5b5f6108918161166c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118af575060408051601f3d908101601f191682019092526118ac91810190612812565b60015b6118dc57604051634c9c8ce360e01b81526001600160a01b03831660048201526024015b60405180910390fd5b5f805160206128b1833981519152811461190c57604051632a87526960e21b8152600481018290526024016118d3565b610a038383611f0a565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610eb25760405163703e46dd60e11b815260040160405180910390fd5b60026009540361198257604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b6001600160a01b038086165f908152600660209081526040808320888452825280832087851684528252808320938616835292905290812080548392906119d19084906127ff565b90915550505050505050565b6119e5611f5f565b610eb2611e99565b6001600160a01b038086165f90815260056020908152604080832088845282528083208785168452825280832093861683529290529081208054839290611a359084906127ff565b90915550506001600160a01b038086165f9081526007602090815260408083208884528252808320938716835292905290812080548392906119d19084906127ff565b5f818310611a865781610a6a565b5090919050565b306001600160a01b03851603611c01575f546001600160a01b03808416911603611b2b575f5460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015b6020604051808303815f875af1158015611b01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b259190612829565b506109ca565b5f5460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af1158015611b7a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b9e9190612829565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015f604051808303815f87803b158015611be6575f80fd5b505af1158015611bf8573d5f803e3d5ffd5b505050506109ca565b5f546001600160a01b03808416911603611c55575f546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd90606401611ae5565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d83906064015f604051808303815f87803b158015611ca4575f80fd5b505af11580156110cc573d5f803e3d5ffd5b835f611cc487838787610ce7565b905082811015611ce057611cdb8783878785611fa8565b611ced565b611ced8783878787611fa8565b50505050505050565b5f611d0385858585610ce7565b90505f611d118560016127ff565b90505f611d2087838787610caa565b905082811115611ced576001600160a01b038088165f9081526006602090815260408083208684528252808320848a1684528252808320938816835292905220839055611ced565b5f5b6001600160a01b0383165f908152600360205260409020611d8a90611679565b811015611e1f576001600160a01b0383165f908152600360205260408120611db29083611682565b90505f5b6001600160a01b0385165f908152600460205260409020611dd690611679565b811015611e15576001600160a01b0385165f908152600460205260408120611dfe9083611682565b9050611e0c86868386612033565b50600101611db6565b5050600101611d6a565b50611e2b8160016127ff565b6001600160a01b0383165f81815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc4190611e799084815260200190565b60405180910390a25050565b5f610a6a836001600160a01b0384166120f6565b611ea1611f5f565b6116765f3361168d565b611eb58282610d24565b6108915760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016118d3565b5f825f018281548110611ef957611ef96127d7565b905f5260205f200154905092915050565b611f1382612142565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611f5757610a0382826121a5565b610891612217565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610eb257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b038086165f90815260056020908152604080832088845282528083208785168452825280832093861683529290529081208054839290611ff0908490612867565b90915550506001600160a01b038086165f9081526007602090815260408083208884528252808320938716835292905290812080548392906119d1908490612867565b5f61204085858585610ce7565b90505f612059866120528760016127ff565b8686610caa565b9050818111156120665750805b5f6120718284612867565b905061208a876120828860016127ff565b8787856119ed565b61209630858785611a8d565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516120e5929190918252602082015260400190565b60405180910390a450505050505050565b5f81815260018301602052604081205461213b57508154600181810184555f84815260208082209093018490558454848252828601909352604090209190915561084a565b505f61084a565b806001600160a01b03163b5f0361217757604051634c9c8ce360e01b81526001600160a01b03821660048201526024016118d3565b5f805160206128b183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516121c1919061287a565b5f60405180830381855af49150503d805f81146121f9576040519150601f19603f3d011682016040523d82523d5f602084013e6121fe565b606091505b509150915061220e858383612236565b95945050505050565b3415610eb25760405163b398979f60e01b815260040160405180910390fd5b60608261224b5761224682612292565b610a6a565b815115801561226257506001600160a01b0384163b155b1561228b57604051639996b31560e01b81526001600160a01b03851660048201526024016118d3565b5080610a6a565b8051156122a25780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5f602082840312156122cb575f80fd5b81356001600160e01b031981168114610a6a575f80fd5b6001600160a01b0381168114611676575f80fd5b5f60208284031215612306575f80fd5b8135610a6a816122e2565b5f60208284031215612321575f80fd5b5035919050565b602080825282518282018190525f918401906040840190835b818110156123685783516001600160a01b0316835260209384019390920191600101612341565b509095945050505050565b5f8060408385031215612384575f80fd5b823591506020830135612396816122e2565b809150509250929050565b5f80604083850312156123b2575f80fd5b82356123bd816122e2565b91506020830135612396816122e2565b634e487b7160e01b5f52604160045260245ffd5b5f80604083850312156123f2575f80fd5b82356123fd816122e2565b915060208301356001600160401b03811115612417575f80fd5b8301601f81018513612427575f80fd5b80356001600160401b03811115612440576124406123cd565b604051601f8201601f19908116603f011681016001600160401b038111828210171561246e5761246e6123cd565b604052818152828201602001871015612485575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f805f606084860312156124b6575f80fd5b83356124c1816122e2565b92506020840135915060408401356124d8816122e2565b809150509250925092565b5f805f606084860312156124f5575f80fd5b8335612500816122e2565b92506020840135612510816122e2565b929592945050506040919091013590565b5f805f8060808587031215612534575f80fd5b843561253f816122e2565b9350602085013592506040850135612556816122e2565b91506060850135612566816122e2565b939692955090935050565b5f805f60608486031215612583575f80fd5b833561258e816122e2565b9250602084013561259e816122e2565b915060408401356124d8816122e2565b5f8083601f8401126125be575f80fd5b5081356001600160401b038111156125d4575f80fd5b6020830191508360208260051b85010111156125ee575f80fd5b9250929050565b5f805f805f805f806080898b03121561260c575f80fd5b88356001600160401b03811115612621575f80fd5b61262d8b828c016125ae565b90995097505060208901356001600160401b0381111561264b575f80fd5b6126578b828c016125ae565b90975095505060408901356001600160401b03811115612675575f80fd5b6126818b828c016125ae565b90955093505060608901356001600160401b0381111561269f575f80fd5b6126ab8b828c016125ae565b999c989b5096995094979396929594505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f60408486031215612706575f80fd5b8335925060208401356001600160401b03811115612722575f80fd5b61272e868287016125ae565b9497909650939450505050565b5f805f805f8060608789031215612750575f80fd5b86356001600160401b03811115612765575f80fd5b61277189828a016125ae565b90975095505060208701356001600160401b0381111561278f575f80fd5b61279b89828a016125ae565b90955093505060408701356001600160401b038111156127b9575f80fd5b6127c589828a016125ae565b979a9699509497509295939492505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561084a5761084a6127eb565b5f60208284031215612822575f80fd5b5051919050565b5f60208284031215612839575f80fd5b81518015158114610a6a575f80fd5b5f8261286257634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561084a5761084a6127eb565b5f82518060208501845e5f92019182525091905056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220f89cd60db1a241d5973d2920b5637bf68cceb132f2c25bc4d7a85f8d1390562e64736f6c634300081a0033","sourceMap":"651:18019:109:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:24;;;;;;;;;;-1:-1:-1;3443:202:24;;;;;:::i;:::-;;:::i;:::-;;;470:14:138;;463:22;445:41;;433:2;418:18;3443:202:24;;;;;;;;612:75:110;;;;;;;;;;-1:-1:-1;612:75:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;;1031:25:138;;;1019:2;1004:18;612:75:110;885:177:138;4759:191:24;;;;;;;;;;-1:-1:-1;4759:191:24;;;;;:::i;:::-;;:::i;18517:151:109:-;;;;;;;;;;-1:-1:-1;18517:151:109;;;;;:::i;:::-;;:::i;:::-;;1841:387;;;;;;;;;;-1:-1:-1;1841:387:109;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5419:195::-;;;;;;;;;;-1:-1:-1;5419:195:109;;;;;:::i;:::-;;:::i;5246:136:24:-;;;;;;;;;;-1:-1:-1;5246:136:24;;;;;:::i;:::-;;:::i;6348:245::-;;;;;;;;;;-1:-1:-1;6348:245:24;;;;;:::i;:::-;;:::i;529:77:110:-;;;;;;;;;;-1:-1:-1;529:77:110;;;;;:::i;:::-;;;;;;;;;;;;;;18371:140:109;;;;;;;;;;-1:-1:-1;18371:140:109;;;;;:::i;:::-;;:::i;7352:226::-;;;;;;;;;;-1:-1:-1;7352:226:109;;;;;:::i;:::-;;:::i;5103:123::-;;;;;;;;;;-1:-1:-1;5103:123:109;;;;;:::i;:::-;;:::i;4158:214:26:-;;;;;;:::i;:::-;;:::i;3705:134::-;;;;;;;;;;;;;:::i;1457:146:110:-;;;;;;;;;;-1:-1:-1;1457:146:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7082:214:109;;;;;;;;;;-1:-1:-1;7082:214:109;;;;;:::i;:::-;-1:-1:-1;;;;;7240:31:109;;;7214:7;7240:31;;;:23;:31;;;;;;;;:38;;;;;;;;;:49;;;;;;;;;;;;7082:214;9342:799;;;;;;;;;;-1:-1:-1;9342:799:109;;;;;:::i;:::-;;:::i;1192:193:110:-;;;;;;;;;;-1:-1:-1;1192:193:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:326:109;;;;;;;;;;-1:-1:-1;5990:326:109;;;;;:::i;:::-;;:::i;6700:330::-;;;;;;;;;;-1:-1:-1;6700:330:109;;;;;:::i;:::-;;:::i;1727:68:110:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1727:68:110;;514:86:111;;;;;;;;;;;;;:::i;5259:154:109:-;;;;;;;;;;-1:-1:-1;5259:154:109;;;;;:::i;:::-;;:::i;6384:244::-;;;;;;;;;;-1:-1:-1;6384:244:109;;;;;:::i;:::-;;:::i;5680:240::-;;;;;;;;;;-1:-1:-1;5680:240:109;;;;;:::i;:::-;;:::i;3732:207:24:-;;;;;;;;;;-1:-1:-1;3732:207:24;;;;;:::i;:::-;;:::i;2234:1200:109:-;;;;;;;;;;;;;:::i;2317:49:24:-;;;;;;;;;;-1:-1:-1;2317:49:24;2362:4;2317:49;;14777:1577:109;;;;;;;;;;-1:-1:-1;14777:1577:109;;;;;:::i;:::-;;:::i;12321:106::-;;;;;;;;;;;;;:::i;1819:58:26:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:26;;;;;;;;;;;;:::i;7617:1674:109:-;;;;;;;;;;-1:-1:-1;7617:1674:109;;;;;:::i;:::-;;:::i;937:191:110:-;;;;;;;;;;-1:-1:-1;937:191:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4883:146:109;;;;;;;;;;-1:-1:-1;4883:146:109;;;;;:::i;:::-;;:::i;827:125::-;;;;;;;;;;-1:-1:-1;827:125:109;;;;;:::i;:::-;;:::i;1610:60:110:-;;;;;;;;;;-1:-1:-1;1610:60:110;;;;;:::i;:::-;;;;;;;;;;;;;;;;958:349:109;;;;;;;;;;-1:-1:-1;958:349:109;;;;;:::i;:::-;;:::i;5662:138:24:-;;;;;;;;;;-1:-1:-1;5662:138:24;;;;;:::i;:::-;;:::i;1313:522:109:-;;;;;;;;;;-1:-1:-1;1313:522:109;;;;;:::i;:::-;;:::i;17901:464::-;;;;;;;;;;-1:-1:-1;17901:464:109;;;;;:::i;:::-;;:::i;503:19:110:-;;;;;;;;;;-1:-1:-1;503:19:110;;;;-1:-1:-1;;;;;503:19:110;;;;;;-1:-1:-1;;;;;11186:32:138;;;11168:51;;11156:2;11141:18;503:19:110;11006:219:138;3443:202:24;3528:4;-1:-1:-1;;;;;;3551:47:24;;-1:-1:-1;;;3551:47:24;;:87;;-1:-1:-1;;;;;;;;;;1133:40:32;;;3602:36:24;3544:94;3443:202;-1:-1:-1;;3443:202:24:o;4759:191::-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:24;;;;;:24;;;;4759:191::o;18517:151:109:-;2362:4:24;3191:16;2362:4;3191:10;:16::i;:::-;18629:32:109::1;-1:-1:-1::0;;;;;;;;;;;18656:4:109::1;18629:10;:32::i;:::-;18517:151:::0;;:::o;1841:387::-;-1:-1:-1;;;;;2006:25:109;;1950:26;2006:25;;;:17;:25;;;;;1922:16;;1950:26;2006:34;;:32;:34::i;:::-;-1:-1:-1;;;;;1979:71:109;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1979:71:109;;1950:100;;2065:9;2060:136;-1:-1:-1;;;;;2084:25:109;;;;;;:17;:25;;;;;:34;;:32;:34::i;:::-;2080:1;:38;2060:136;;;-1:-1:-1;;;;;2154:25:109;;;;;;:17;:25;;;;;:31;;2183:1;2154:28;:31::i;:::-;2139:9;2149:1;2139:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2139:46:109;;;:12;;;;;;;;;;;:46;2120:3;;2060:136;;;-1:-1:-1;2212:9:109;1841:387;-1:-1:-1;;1841:387:109:o;5419:195::-;5503:7;5541:23;5557:6;5541:15;:23::i;:::-;:28;:66;;5576:27;5596:6;5576:19;:27::i;:::-;:31;;5606:1;5576:31;:::i;:::-;5541:66;;;5572:1;5522:85;5419:195;-1:-1:-1;;5419:195:109:o;5246:136:24:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;6348:245::-;-1:-1:-1;;;;;6441:34:24;;966:10:29;6441:34:24;6437:102;;6498:30;;-1:-1:-1;;;6498:30:24;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;18371:140:109:-;2362:4:24;3191:16;2362:4;3191:10;:16::i;:::-;18473:31:109::1;-1:-1:-1::0;;;;;;;;;;;18499:4:109::1;18473:9;:31::i;7352:226::-:0;7468:7;7506:65;7528:6;7536:23;7552:6;7536:15;:23::i;:::-;7561:9;-1:-1:-1;;;;;7240:31:109;;;7214:7;7240:31;;;:23;:31;;;;;;;;:38;;;;;;;;;:49;;;;;;;;;;;;7082:214;7506:65;7487:84;7352:226;-1:-1:-1;;;7352:226:109:o;5103:123::-;-1:-1:-1;;;;;5191:28:109;5165:7;5191:28;;;:20;:28;;;;;;;5103:123::o;4158:214:26:-;2653:13;:11;:13::i;:::-;4273:36:::1;4291:17;4273;:36::i;:::-;4319:46;4341:17;4360:4;4319:21;:46::i;3705:134::-:0;3774:7;2924:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3705:134:26;:::o;9342:799:109:-;-1:-1:-1;;;;;;;;;;;3191:16:24;3202:4;3191:10;:16::i;:::-;2356:21:58::1;:19;:21::i;:::-;9818:153:109::2;9843:6;9863:31;9887:6;9863:23;:31::i;:::-;9908:9;9931:10;9955:6;9818:11;:153::i;:::-;10071:9;-1:-1:-1::0;;;;;9987:147:109::2;10037:20;10050:6;10037:12;:20::i;:::-;9987:147;::::0;;10094:10:::2;11798:51:138::0;;11880:2;11865:18;;11858:34;;;-1:-1:-1;;;;;9987:147:109;::::2;::::0;::::2;::::0;11771:18:138;9987:147:109::2;;;;;;;2398:20:58::1;1713:1:::0;2924:7;:21;2744:208;5990:326:109;6124:7;6162:147;6195:6;6219:23;6235:6;6219:15;:23::i;:::-;6260:9;6287:8;6162:15;:147::i;:::-;6143:166;5990:326;-1:-1:-1;;;;5990:326:109:o;6700:330::-;6836:7;6874:149;6909:6;6933:23;6949:6;6933:15;:23::i;:::-;6974:9;7001:8;6874:17;:149::i;514:86:111:-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;-1:-1:-1;;;;;4348:14:25;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:25;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;573:20:111::1;:18;:20::i;:::-;5070:14:25::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;12056:50:138;;5142:14:25;;12044:2:138;12029:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;514:86:111:o;5259:154:109:-;5318:7;5344:23;5360:6;5344:15;:23::i;:::-;:28;:62;;5379:23;5395:6;5379:15;:23::i;6384:244::-;-1:-1:-1;;;;;6564:29:109;;;6538:7;6564:29;;;:21;:29;;;;;;;;:36;;;;;;;;;:47;;;;;;;;;;;:57;;;;;;;;;;;;6384:244::o;5680:240::-;-1:-1:-1;;;;;5858:27:109;;;5832:7;5858:27;;;:19;:27;;;;;;;;:34;;;;;;;;;:45;;;;;;;;;;;:55;;;;;;;;;;;;5680:240::o;3732:207:24:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:24;;;;;;;;-1:-1:-1;;;;;3901:31:24;;;;;;;;;;;;;;;3732:207::o;2234:1200:109:-;2356:21:58;:19;:21::i;:::-;2314:10:109::1;2297:14;2338:29:::0;;;:21:::1;:29;::::0;;;;;::::1;;2334:66;;;2376:24;;-1:-1:-1::0;;;2376:24:109::1;;;;;;;;;;;2334:66;-1:-1:-1::0;;;;;2410:29:109;::::1;;::::0;;;:21:::1;:29;::::0;;;;:36;;-1:-1:-1;;2410:36:109::1;2442:4;2410:36;::::0;;2556:27:::1;2432:6:::0;2556:19:::1;:27::i;:::-;-1:-1:-1::0;;;;;2525:28:109;::::1;;::::0;;;:20:::1;:28;::::0;;;;:58;;;;2594:834:::1;-1:-1:-1::0;;;;;2618:25:109;::::1;;::::0;;;:17:::1;:25;::::0;;;;:34:::1;::::0;:32:::1;:34::i;:::-;2614:1;:38;2594:834;;;-1:-1:-1::0;;;;;2692:25:109;::::1;2673:16;2692:25:::0;;;:17:::1;:25;::::0;;;;:31:::1;::::0;2721:1;2692:28:::1;:31::i;:::-;2673:50;;2743:9;2738:680;-1:-1:-1::0;;;;;2762:26:109;::::1;;::::0;;;:18:::1;:26;::::0;;;;:35:::1;::::0;:33:::1;:35::i;:::-;2758:1;:39;2738:680;;;-1:-1:-1::0;;;;;2842:26:109;::::1;2822:17;2842:26:::0;;;:18:::1;:26;::::0;;;;:32:::1;::::0;2872:1;2842:29:::1;:32::i;:::-;2822:52;;2951:21;2975:145;3012:6;3040:1;3063:9;3094:8;2975:15;:145::i;:::-;2951:169;;3207:196;3238:6;3266:23;3282:6;3266:15;:23::i;:::-;3311:9;3342:8;3372:13;3207:9;:196::i;:::-;-1:-1:-1::0;;2799:3:109::1;;2738:680;;;-1:-1:-1::0;;2654:3:109::1;;2594:834;;;;2287:1147;2398:20:58::0;1713:1;2924:7;:21;2744:208;2398:20;2234:1200:109:o;14777:1577::-;2356:21:58;:19;:21::i;:::-;14988:9:109::1;14983:1365;15003:20:::0;;::::1;14983:1365;;;15271:20;15294:281;15320:185;15357:10;15389:29;15405:9;;15415:1;15405:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;15389:29::-;15440:10;;15451:1;15440:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15475:9;;15485:1;15475:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;15320:185::-;15523:38;15532:7;;15540:1;15532:10;;;;;;;:::i;:::-;;;;;;;15544:13;;15558:1;15544:16;;;;;;;:::i;:::-;;;;;;;15523:8;:38::i;:::-;15294:8;:281::i;:::-;15271:304;;15589:226;15627:4;15728:9;;15738:1;15728:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15758:10;;15769:1;15758:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;15789:12;15589;:226::i;:::-;15974:187;16003:10;16031:27;16047:10;16031:15;:27::i;:::-;16076:10;;16087:1;16076:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16107:9;;16117:1;16107:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16137:7;;16145:1;16137:10;;;;;;;:::i;:::-;;;;;;;15974:11;:187::i;:::-;16176:161;16207:10;16235:27;16251:10;16235:15;:27::i;:::-;16280:10;;16291:1;16280:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16311:9;;16321:1;16311:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;16176:13;:161::i;:::-;-1:-1:-1::0;15025:3:109::1;;14983:1365;;;;2398:20:58::0;1713:1;2924:7;:21;2744:208;2398:20;14777:1577:109;;;;;;;;:::o;12321:106::-;12365:55;12380:10;12392:27;12408:10;12392:15;:27::i;:::-;12365:14;:55::i;7617:1674::-;-1:-1:-1;;;;;;;;;;;3191:16:24;3202:4;3191:10;:16::i;:::-;2356:21:58::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;7822:25:109;::::2;;::::0;;;:17:::2;:25;::::0;;;;:41:::2;::::0;7852:10:::2;7822:29;:41::i;:::-;-1:-1:-1::0;8227:21:109::2;8251:5:::0;;:30:::2;::::0;-1:-1:-1;;;8251:30:109;;8275:4:::2;8251:30;::::0;::::2;11168:51:138::0;-1:-1:-1;;;;;8251:5:109;;::::2;::::0;:15:::2;::::0;11141:18:138;;8251:30:109::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8562:57;::::0;-1:-1:-1;;;8562:57:109;;8585:10:::2;8562:57;::::0;::::2;12716:51:138::0;8605:4:109::2;12783:18:138::0;;;12776:60;12852:18;;;12845:34;;;8227:54:109;;-1:-1:-1;;;;;;8562:22:109;::::2;::::0;::::2;::::0;12689:18:138;;8562:57:109::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8752:22:109::2;8768:6:::0;8752:13;:22:::2;:::i;:::-;8718:5;::::0;:30:::2;::::0;-1:-1:-1;;;8718:30:109;;8742:4:::2;8718:30;::::0;::::2;11168:51:138::0;-1:-1:-1;;;;;8718:5:109;;::::2;::::0;:15:::2;::::0;11141:18:138;;8718:30:109::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;8714:114;;8795:33;;-1:-1:-1::0;;;8795:33:109::2;;;;;;;;;;;8714:114;8895:160;8918:6;8938:31;8962:6;8938:23;:31::i;:::-;8991:9;9015:10;9039:6;8895:9;:160::i;:::-;9220:9;-1:-1:-1::0;;;;;9130:154:109::2;9178:20;9191:6;9178:12;:20::i;:::-;9130:154;::::0;;9244:10:::2;11798:51:138::0;;11880:2;11865:18;;11858:34;;;-1:-1:-1;;;;;9130:154:109;::::2;::::0;::::2;::::0;11771:18:138;9130:154:109::2;;;;;;;7759:1532;2398:20:58::1;1713:1:::0;2924:7;:21;2744:208;4883:146:109;-1:-1:-1;;;;;4993:29:109;;4949:7;4993:29;;;:21;:29;;;;;;4975:47;;:15;:47;:::i;827:125::-;8870:21:25;4302:15;;-1:-1:-1;;;4302:15:25;;;;4301:16;;-1:-1:-1;;;;;4348:14:25;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:25;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:25;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:25;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:25;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:25;-1:-1:-1;;;5013:22:25;;;4979:67;891:30:109::1;:28;:30::i;:::-;931:5;:14:::0;;-1:-1:-1;;;;;;931:14:109::1;-1:-1:-1::0;;;;;931:14:109;::::1;;::::0;;5066:101:25;;;;5100:23;;-1:-1:-1;;;;5100:23:25;;;5142:14;;-1:-1:-1;12056:50:138;;5142:14:25;;12044:2:138;12029:18;5142:14:25;;;;;;;5066:101;4092:1081;;;;;827:125:109;:::o;958:349::-;2356:21:58;:19;:21::i;:::-;1107:10:109::1;1090:14;1127:29:::0;;;:21:::1;:29;::::0;;;;:45;;;1183:118:::1;1203:21:::0;;::::1;1183:118;;;1245:45;1276:10;;1287:1;1276:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1245:26:109;::::1;;::::0;;;:18:::1;:26;::::0;;;;;:30:::1;:45::i;:::-;-1:-1:-1::0;1226:3:109::1;;1183:118;;;;1080:227;2398:20:58::0;1713:1;2924:7;:21;2744:208;5662:138:24;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;1313:522:109:-:0;-1:-1:-1;;;;;1608:26:109;;1551:27;1608:26;;;:18;:26;;;;;1395:16;;1551:27;1608:35;;:33;:35::i;:::-;-1:-1:-1;;;;;1581:72:109;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1581:72:109;;1551:102;;1668:9;1663:139;-1:-1:-1;;;;;1687:26:109;;;;;;:18;:26;;;;;:35;;:33;:35::i;:::-;1683:1;:39;1663:139;;;-1:-1:-1;;;;;1759:26:109;;;;;;:18;:26;;;;;:32;;1789:1;1759:29;:32::i;:::-;1743:10;1754:1;1743:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;1743:48:109;;;:13;;;;;;;;;;;:48;1724:3;;1663:139;;17901:464;2356:21:58;:19;:21::i;:::-;18195:9:109::1;18190:169;18210:20:::0;;::::1;18190:169;;;18283:65;18296:10;18308:9;;18318:1;18308:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18322:10;;18333:1;18322:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;18337:7;;18345:1;18337:10;;;;;;;:::i;:::-;;;;;;;18283:12;:65::i;:::-;18232:3;;18190:169;;;;2398:20:58::0;1713:1;2924:7;:21;2744:208;4148:103:24;4214:30;4225:4;966:10:29;4214::24;:30::i;:::-;4148:103;:::o;9117:115:67:-;9180:7;9206:19;9214:3;4556:18;;4474:107;9574:156;9648:7;9698:22;9702:3;9714:5;9698:3;:22::i;7270:387:24:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:24;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:24;;;;;;;;;:38;;-1:-1:-1;;7475:38:24;7509:4;7475:38;;;7559:12;966:10:29;;887:96;7559:12:24;-1:-1:-1;;;;;7532:40:24;7550:7;-1:-1:-1;;;;;7532:40:24;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:24;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:24;;;;;;;;;;:39;;-1:-1:-1;;8097:39:24;;;8155:40;966:10:29;;8097:14:24;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4599:312:26;4679:4;-1:-1:-1;;;;;4688:6:26;4671:23;;;:120;;;4785:6;-1:-1:-1;;;;;4749:42:26;:32;-1:-1:-1;;;;;;;;;;;2035:53:43;-1:-1:-1;;;;;2035:53:43;;1957:138;4749:32:26;-1:-1:-1;;;;;4749:42:26;;;4671:120;4654:251;;;4865:29;;-1:-1:-1;;;4865:29:26;;;;;;;;;;;965:103:111;2362:4:24;3191:16;2362:4;3191:10;:16::i;6052:538:26:-;6169:17;-1:-1:-1;;;;;6151:50:26;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:26;;;;;;;;-1:-1:-1;;6151:52:26;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:26;;-1:-1:-1;;;;;11186:32:138;;6513:60:26;;;11168:51:138;11141:18;;6513:60:26;;;;;;;;6147:437;-1:-1:-1;;;;;;;;;;;6245:40:26;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:26;;;;;1031:25:138;;;1004:18;;6312:34:26;885:177:138;6241:120:26;6374:54;6404:17;6423:4;6374:29;:54::i;5028:213::-;5102:4;-1:-1:-1;;;;;5111:6:26;5094:23;;5090:145;;5195:29;;-1:-1:-1;;;5195:29:26;;;;;;;;;;;2431:307:58;1755:1;2558:7;;:18;2554:86;;2599:30;;-1:-1:-1;;;2599:30:58;;;;;;;;;;;2554:86;1755:1;2714:7;:17;2431:307::o;4073:244:109:-;-1:-1:-1;;;;;4243:29:109;;;;;;;:21;:29;;;;;;;;:36;;;;;;;;:47;;;;;;;;;;:57;;;;;;;;;;;:67;;4304:6;;4243:29;:67;;4304:6;;4243:67;:::i;:::-;;;;-1:-1:-1;;;;;;;4073:244:109:o;606:103:111:-;6931:20:25;:18;:20::i;:::-;672:30:111::1;:28;:30::i;3440:309:109:-:0;-1:-1:-1;;;;;3608:27:109;;;;;;;:19;:27;;;;;;;;:34;;;;;;;;:45;;;;;;;;;;:55;;;;;;;;;;;:65;;3667:6;;3608:27;:65;;3667:6;;3608:65;:::i;:::-;;;;-1:-1:-1;;;;;;;3683:31:109;;;;;;;:23;:31;;;;;;;;:38;;;;;;;;:49;;;;;;;;;;;:59;;3736:6;;3683:31;:59;;3736:6;;3683:59;:::i;2557:104:65:-;2615:7;2645:1;2641;:5;:13;;2653:1;2641:13;;;-1:-1:-1;2649:1:65;;2557:104;-1:-1:-1;2557:104:65:o;16360:1535:109:-;16526:4;-1:-1:-1;;;;;16510:21:109;;;16506:1383;;16611:5;;-1:-1:-1;;;;;16603:27:109;;;16611:5;;16603:27;16599:456;;16699:5;;:32;;-1:-1:-1;;;16699:32:109;;-1:-1:-1;;;;;11816:32:138;;;16699::109;;;11798:51:138;11865:18;;;11858:34;;;16699:5:109;;;;:14;;11771:18:138;;16699:32:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;16506:1383;;16599:456;16862:5;;:32;;-1:-1:-1;;;16862:32:109;;-1:-1:-1;;;;;11816:32:138;;;16862::109;;;11798:51:138;11865:18;;;11858:34;;;16862:5:109;;;;:13;;11771:18:138;;16862:32:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;16978:62:109;;-1:-1:-1;;;16978:62:109;;-1:-1:-1;;;;;11816:32:138;;;16978:62:109;;;11798:51:138;11865:18;;;11858:34;;;16978:44:109;;;;;11771:18:138;;16978:62:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16506:1383;;;17453:5;;-1:-1:-1;;;;;17445:27:109;;;17453:5;;17445:27;17441:438;;17541:5;;:42;;-1:-1:-1;;;17541:42:109;;-1:-1:-1;;;;;12734:32:138;;;17541:42:109;;;12716:51:138;12803:32;;;12783:18;;;12776:60;12852:18;;;12845:34;;;17541:5:109;;;;:18;;12689::138;;17541:42:109;12514:371:138;17441:438:109;17714:150;;-1:-1:-1;;;17714:150:109;;-1:-1:-1;;;;;12734:32:138;;;17714:150:109;;;12716:51:138;12803:32;;;12783:18;;;12776:60;12852:18;;;12845:34;;;17714:48:109;;;;;12689:18:138;;17714:150:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12734:803;12979:5;12957:19;13018:115;13047:6;12979:5;13092:9;13115:8;13018:15;:115::i;:::-;12994:139;;13242:6;13226:13;:22;13222:309;;;13264:163;13294:6;13318:11;13347:9;13374:8;13400:13;13264:12;:163::i;:::-;13222:309;;;13458:62;13471:6;13479:11;13492:9;13503:8;13513:6;13458:12;:62::i;:::-;12894:643;;12734:803;;;;;:::o;13869:902::-;14076:21;14100:109;14129:6;14149:5;14168:9;14191:8;14100:15;:109::i;:::-;14076:133;-1:-1:-1;14219:19:109;14241:9;:5;14249:1;14241:9;:::i;:::-;14219:31;;14260:23;14286:117;14317:6;14337:11;14362:9;14385:8;14286:17;:117::i;:::-;14260:143;;14436:13;14418:15;:31;14414:351;;;-1:-1:-1;;;;;4746:29:109;;;;;;;:21;:29;;;;;;;;:36;;;;;;;;:47;;;;;;;;;;:57;;;;;;;;;:66;;;14592:162;4576:243;11554:761;11783:9;11778:383;-1:-1:-1;;;;;11802:25:109;;;;;;:17;:25;;;;;:34;;:32;:34::i;:::-;11798:1;:38;11778:383;;;-1:-1:-1;;;;;11876:25:109;;11857:16;11876:25;;;:17;:25;;;;;:31;;11905:1;11876:28;:31::i;:::-;11857:50;;11927:9;11922:229;-1:-1:-1;;;;;11946:26:109;;;;;;:18;:26;;;;;:35;;:33;:35::i;:::-;11942:1;:39;11922:229;;;-1:-1:-1;;;;;12026:26:109;;12006:17;12026:26;;;:18;:26;;;;;:32;;12056:1;12026:29;:32::i;:::-;12006:52;;12077:59;12095:6;12103:11;12116:9;12127:8;12077:17;:59::i;:::-;-1:-1:-1;11983:3:109;;11922:229;;;-1:-1:-1;;11838:3:109;;11778:383;;;-1:-1:-1;12241:15:109;:11;12255:1;12241:15;:::i;:::-;-1:-1:-1;;;;;12210:28:109;;;;;;:20;:28;;;;;;;:46;;;;12272:36;;;;;;12296:11;1031:25:138;;1019:2;1004:18;;885:177;12272:36:109;;;;;;;;11554:761;;:::o;8316:150:67:-;8386:4;8409:50;8414:3;-1:-1:-1;;;;;8434:23:67;;8409:4;:50::i;715:125:111:-;6931:20:25;:18;:20::i;:::-;791:42:111::1;2362:4:24;822:10:111;791;:42::i;4381:197:24:-:0;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:24;;-1:-1:-1;;;;;11816:32:138;;4514:47:24;;;11798:51:138;11865:18;;;11858:34;;;11771:18;;4514:47:24;11624:274:138;4923:118:67;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;2779:335:43:-;2870:37;2889:17;2870:18;:37::i;:::-;2922:27;;-1:-1:-1;;;;;2922:27:43;;;;;;;;2964:11;;:15;2960:148;;2995:53;3024:17;3043:4;2995:28;:53::i;2960:148::-;3079:18;:16;:18::i;7084:141:25:-;8870:21;8560:40;-1:-1:-1;;;8560:40:25;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:25;;;;;;;;;;;3755:312:109;-1:-1:-1;;;;;3926:27:109;;;;;;;:19;:27;;;;;;;;:34;;;;;;;;:45;;;;;;;;;;:55;;;;;;;;;;;:65;;3985:6;;3926:27;:65;;3985:6;;3926:65;:::i;:::-;;;;-1:-1:-1;;;;;;;4001:31:109;;;;;;;:23;:31;;;;;;;;:38;;;;;;;;:49;;;;;;;;;;;:59;;4054:6;;4001:31;:59;;4054:6;;4001:59;:::i;10208:1340::-;10453:19;10475:115;10504:6;10524:11;10549:9;10572:8;10475:15;:115::i;:::-;10453:137;-1:-1:-1;10600:21:109;10624:121;10655:6;10675:15;:11;10689:1;10675:15;:::i;:::-;10704:9;10727:8;10624:17;:121::i;:::-;10600:145;;10775:11;10759:13;:27;10755:85;;;-1:-1:-1;10818:11:109;10755:85;10849:17;10869:27;10883:13;10869:11;:27;:::i;:::-;10849:47;-1:-1:-1;10907:66:109;10917:6;10925:15;:11;10939:1;10925:15;:::i;:::-;10942:9;10953:8;10963:9;10907;:66::i;:::-;11307:63;11328:4;11335:8;11345:9;11356:13;11307:12;:63::i;:::-;11470:9;-1:-1:-1;;;;;11386:155:109;11445:11;11423:8;-1:-1:-1;;;;;11386:155:109;;11493:11;11518:13;11386:155;;;;;;14169:25:138;;;14225:2;14210:18;;14203:34;14157:2;14142:18;;13995:248;11386:155:109;;;;;;;;10356:1192;;;10208:1340;;;;:::o;2241:406:67:-;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:67;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:67;2618:12;;2186:281:43;2263:17;-1:-1:-1;;;;;2263:29:43;;2296:1;2263:34;2259:119;;2320:47;;-1:-1:-1;;;2320:47:43;;-1:-1:-1;;;;;11186:32:138;;2320:47:43;;;11168:51:138;11141:18;;2320:47:43;11006:219:138;2259:119:43;-1:-1:-1;;;;;;;;;;;2387:73:43;;-1:-1:-1;;;;;;2387:73:43;-1:-1:-1;;;;;2387:73:43;;;;;;;;;;2186:281::o;4106:253:56:-;4189:12;4214;4228:23;4255:6;-1:-1:-1;;;;;4255:19:56;4275:4;4255:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:67;;;;4297:55;4324:6;4332:7;4341:10;4297:26;:55::i;:::-;4290:62;4106:253;-1:-1:-1;;;;;4106:253:56:o;6598:122:43:-;6648:9;:13;6644:70;;6684:19;;-1:-1:-1;;;6684:19:43;;;;;;;;;;;4625:582:56;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:56;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:56;;-1:-1:-1;;;;;11186:32:138;;5121:24:56;;;11168:51:138;11141:18;;5121:24:56;11006:219:138;5041:119:56;-1:-1:-1;5180:10:56;5173:17;;5743:516;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:56;;;;;;;;;;;14:286:138;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:138;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:138;;562:42;;552:70;;618:1;615;608:12;633:247;692:6;745:2;733:9;724:7;720:23;716:32;713:52;;;761:1;758;751:12;713:52;800:9;787:23;819:31;844:5;819:31;:::i;1067:226::-;1126:6;1179:2;1167:9;1158:7;1154:23;1150:32;1147:52;;;1195:1;1192;1185:12;1147:52;-1:-1:-1;1240:23:138;;1067:226;-1:-1:-1;1067:226:138:o;1480:637::-;1670:2;1682:21;;;1752:13;;1655:18;;;1774:22;;;1622:4;;1853:15;;;1827:2;1812:18;;;1622:4;1896:195;1910:6;1907:1;1904:13;1896:195;;;1975:13;;-1:-1:-1;;;;;1971:39:138;1959:52;;2040:2;2066:15;;;;2031:12;;;;2007:1;1925:9;1896:195;;;-1:-1:-1;2108:3:138;;1480:637;-1:-1:-1;;;;;1480:637:138:o;2122:367::-;2190:6;2198;2251:2;2239:9;2230:7;2226:23;2222:32;2219:52;;;2267:1;2264;2257:12;2219:52;2312:23;;;-1:-1:-1;2411:2:138;2396:18;;2383:32;2424:33;2383:32;2424:33;:::i;:::-;2476:7;2466:17;;;2122:367;;;;;:::o;2494:388::-;2562:6;2570;2623:2;2611:9;2602:7;2598:23;2594:32;2591:52;;;2639:1;2636;2629:12;2591:52;2678:9;2665:23;2697:31;2722:5;2697:31;:::i;:::-;2747:5;-1:-1:-1;2804:2:138;2789:18;;2776:32;2817:33;2776:32;2817:33;:::i;2887:127::-;2948:10;2943:3;2939:20;2936:1;2929:31;2979:4;2976:1;2969:15;3003:4;3000:1;2993:15;3019:1079;3096:6;3104;3157:2;3145:9;3136:7;3132:23;3128:32;3125:52;;;3173:1;3170;3163:12;3125:52;3212:9;3199:23;3231:31;3256:5;3231:31;:::i;:::-;3281:5;-1:-1:-1;3337:2:138;3322:18;;3309:32;-1:-1:-1;;;;;3353:30:138;;3350:50;;;3396:1;3393;3386:12;3350:50;3419:22;;3472:4;3464:13;;3460:27;-1:-1:-1;3450:55:138;;3501:1;3498;3491:12;3450:55;3541:2;3528:16;-1:-1:-1;;;;;3559:6:138;3556:30;3553:56;;;3589:18;;:::i;:::-;3638:2;3632:9;3730:2;3692:17;;-1:-1:-1;;3688:31:138;;;3721:2;3684:40;3680:54;3668:67;;-1:-1:-1;;;;;3750:34:138;;3786:22;;;3747:62;3744:88;;;3812:18;;:::i;:::-;3848:2;3841:22;3872;;;3913:15;;;3930:2;3909:24;3906:37;-1:-1:-1;3903:57:138;;;3956:1;3953;3946:12;3903:57;4012:6;4007:2;4003;3999:11;3994:2;3986:6;3982:15;3969:50;4065:1;4060:2;4051:6;4043;4039:19;4035:28;4028:39;4086:6;4076:16;;;;;3019:1079;;;;;:::o;4103:508::-;4180:6;4188;4196;4249:2;4237:9;4228:7;4224:23;4220:32;4217:52;;;4265:1;4262;4255:12;4217:52;4304:9;4291:23;4323:31;4348:5;4323:31;:::i;:::-;4373:5;-1:-1:-1;4451:2:138;4436:18;;4423:32;;-1:-1:-1;4533:2:138;4518:18;;4505:32;4546:33;4505:32;4546:33;:::i;:::-;4598:7;4588:17;;;4103:508;;;;;:::o;4616:::-;4693:6;4701;4709;4762:2;4750:9;4741:7;4737:23;4733:32;4730:52;;;4778:1;4775;4768:12;4730:52;4817:9;4804:23;4836:31;4861:5;4836:31;:::i;:::-;4886:5;-1:-1:-1;4943:2:138;4928:18;;4915:32;4956:33;4915:32;4956:33;:::i;:::-;4616:508;;5008:7;;-1:-1:-1;;;5088:2:138;5073:18;;;;5060:32;;4616:508::o;5129:650::-;5215:6;5223;5231;5239;5292:3;5280:9;5271:7;5267:23;5263:33;5260:53;;;5309:1;5306;5299:12;5260:53;5348:9;5335:23;5367:31;5392:5;5367:31;:::i;:::-;5417:5;-1:-1:-1;5495:2:138;5480:18;;5467:32;;-1:-1:-1;5577:2:138;5562:18;;5549:32;5590:33;5549:32;5590:33;:::i;:::-;5642:7;-1:-1:-1;5701:2:138;5686:18;;5673:32;5714:33;5673:32;5714:33;:::i;:::-;5129:650;;;;-1:-1:-1;5129:650:138;;-1:-1:-1;;5129:650:138:o;5784:529::-;5861:6;5869;5877;5930:2;5918:9;5909:7;5905:23;5901:32;5898:52;;;5946:1;5943;5936:12;5898:52;5985:9;5972:23;6004:31;6029:5;6004:31;:::i;:::-;6054:5;-1:-1:-1;6111:2:138;6096:18;;6083:32;6124:33;6083:32;6124:33;:::i;:::-;6176:7;-1:-1:-1;6235:2:138;6220:18;;6207:32;6248:33;6207:32;6248:33;:::i;6318:367::-;6381:8;6391:6;6445:3;6438:4;6430:6;6426:17;6422:27;6412:55;;6463:1;6460;6453:12;6412:55;-1:-1:-1;6486:20:138;;-1:-1:-1;;;;;6518:30:138;;6515:50;;;6561:1;6558;6551:12;6515:50;6598:4;6590:6;6586:17;6574:29;;6658:3;6651:4;6641:6;6638:1;6634:14;6626:6;6622:27;6618:38;6615:47;6612:67;;;6675:1;6672;6665:12;6612:67;6318:367;;;;;:::o;6690:1431::-;6884:6;6892;6900;6908;6916;6924;6932;6940;6993:3;6981:9;6972:7;6968:23;6964:33;6961:53;;;7010:1;7007;7000:12;6961:53;7050:9;7037:23;-1:-1:-1;;;;;7075:6:138;7072:30;7069:50;;;7115:1;7112;7105:12;7069:50;7154:70;7216:7;7207:6;7196:9;7192:22;7154:70;:::i;:::-;7243:8;;-1:-1:-1;7128:96:138;-1:-1:-1;;7331:2:138;7316:18;;7303:32;-1:-1:-1;;;;;7347:32:138;;7344:52;;;7392:1;7389;7382:12;7344:52;7431:72;7495:7;7484:8;7473:9;7469:24;7431:72;:::i;:::-;7522:8;;-1:-1:-1;7405:98:138;-1:-1:-1;;7610:2:138;7595:18;;7582:32;-1:-1:-1;;;;;7626:32:138;;7623:52;;;7671:1;7668;7661:12;7623:52;7710:72;7774:7;7763:8;7752:9;7748:24;7710:72;:::i;:::-;7801:8;;-1:-1:-1;7684:98:138;-1:-1:-1;;7889:2:138;7874:18;;7861:32;-1:-1:-1;;;;;7905:32:138;;7902:52;;;7950:1;7947;7940:12;7902:52;7989:72;8053:7;8042:8;8031:9;8027:24;7989:72;:::i;:::-;6690:1431;;;;-1:-1:-1;6690:1431:138;;-1:-1:-1;6690:1431:138;;;;;;8080:8;-1:-1:-1;;;6690:1431:138:o;8126:418::-;8275:2;8264:9;8257:21;8238:4;8307:6;8301:13;8350:6;8345:2;8334:9;8330:18;8323:34;8409:6;8404:2;8396:6;8392:15;8387:2;8376:9;8372:18;8366:50;8465:1;8460:2;8451:6;8440:9;8436:22;8432:31;8425:42;8535:2;8528;8524:7;8519:2;8511:6;8507:15;8503:29;8492:9;8488:45;8484:54;8476:62;;;8126:418;;;;:::o;9346:551::-;9441:6;9449;9457;9510:2;9498:9;9489:7;9485:23;9481:32;9478:52;;;9526:1;9523;9516:12;9478:52;9571:23;;;-1:-1:-1;9669:2:138;9654:18;;9641:32;-1:-1:-1;;;;;9685:30:138;;9682:50;;;9728:1;9725;9718:12;9682:50;9767:70;9829:7;9820:6;9809:9;9805:22;9767:70;:::i;:::-;9346:551;;9856:8;;-1:-1:-1;9741:96:138;;-1:-1:-1;;;;9346:551:138:o;9902:1099::-;10060:6;10068;10076;10084;10092;10100;10153:2;10141:9;10132:7;10128:23;10124:32;10121:52;;;10169:1;10166;10159:12;10121:52;10209:9;10196:23;-1:-1:-1;;;;;10234:6:138;10231:30;10228:50;;;10274:1;10271;10264:12;10228:50;10313:70;10375:7;10366:6;10355:9;10351:22;10313:70;:::i;:::-;10402:8;;-1:-1:-1;10287:96:138;-1:-1:-1;;10490:2:138;10475:18;;10462:32;-1:-1:-1;;;;;10506:32:138;;10503:52;;;10551:1;10548;10541:12;10503:52;10590:72;10654:7;10643:8;10632:9;10628:24;10590:72;:::i;:::-;10681:8;;-1:-1:-1;10564:98:138;-1:-1:-1;;10769:2:138;10754:18;;10741:32;-1:-1:-1;;;;;10785:32:138;;10782:52;;;10830:1;10827;10820:12;10782:52;10869:72;10933:7;10922:8;10911:9;10907:24;10869:72;:::i;:::-;9902:1099;;;;-1:-1:-1;9902:1099:138;;-1:-1:-1;9902:1099:138;;10960:8;;9902:1099;-1:-1:-1;;;9902:1099:138:o;11230:127::-;11291:10;11286:3;11282:20;11279:1;11272:31;11322:4;11319:1;11312:15;11346:4;11343:1;11336:15;11362:127;11423:10;11418:3;11414:20;11411:1;11404:31;11454:4;11451:1;11444:15;11478:4;11475:1;11468:15;11494:125;11559:9;;;11580:10;;;11577:36;;;11593:18;;:::i;12325:184::-;12395:6;12448:2;12436:9;12427:7;12423:23;12419:32;12416:52;;;12464:1;12461;12454:12;12416:52;-1:-1:-1;12487:16:138;;12325:184;-1:-1:-1;12325:184:138:o;12890:277::-;12957:6;13010:2;12998:9;12989:7;12985:23;12981:32;12978:52;;;13026:1;13023;13016:12;12978:52;13058:9;13052:16;13111:5;13104:13;13097:21;13090:5;13087:32;13077:60;;13133:1;13130;13123:12;13172:217;13212:1;13238;13228:132;;13282:10;13277:3;13273:20;13270:1;13263:31;13317:4;13314:1;13307:15;13345:4;13342:1;13335:15;13228:132;-1:-1:-1;13374:9:138;;13172:217::o;13862:128::-;13929:9;;;13950:11;;;13947:37;;;13964:18;;:::i;14248:301::-;14377:3;14415:6;14409:13;14461:6;14454:4;14446:6;14442:17;14437:3;14431:37;14523:1;14487:16;;14512:13;;;-1:-1:-1;14487:16:138;14248:301;-1:-1:-1;14248:301:138:o","linkReferences":{},"immutableReferences":{"39659":[{"start":6066,"length":32},{"start":6107,"length":32},{"start":6433,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WHITELIST_ROLE()":"7a997ab7","acceptGenesisCeremony()":"92a2ebf3","currentEpochByDomain(address)":"0a0b1b64","domainGenesisAccepted(address)":"d1ba90ff","epochDurationByDomain(address)":"3bccf635","epochStakesByDomain(address,uint256,address,address)":"c0b95ab8","epochTotalStakeByDomain(address,uint256,address)":"54300d7a","epochUnstakesByDomain(address,uint256,address,address)":"65f1ea20","getAttestersByDomain(address)":"2924b73b","getCurrentEpoch(address)":"4d3223a5","getCurrentEpochStake(address,address,address)":"70224360","getCurrentEpochUnstake(address,address,address)":"7667b76d","getCustodiansByDomain(address)":"d5ca03de","getEpochByBlockTime(address)":"c3471ff8","getNextEpoch(address)":"8489e580","getNextEpochByBlockTime(address)":"2c7785a8","getRoleAdmin(bytes32)":"248a9ca3","getStakeAtEpoch(address,uint256,address,address)":"8d908258","getTotalStakeForCurrentEpoch(address,address)":"44198e4d","getTotalStakeForEpoch(address,uint256,address)":"5cdf3155","getUnstakeAtEpoch(address,uint256,address,address)":"879b938b","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address)":"c4d66de8","proxiableUUID()":"52d1902d","registerDomain(uint256,address[])":"d37304f8","removeAddressFromWhitelist(address)":"286dd3f5","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","reward(address[],uint256[],address[])":"da33ee7f","rollOverEpoch()":"a887b71c","slash(address[],address[],uint256[],uint256[])":"a885c975","stake(address,address,uint256)":"bf6eac2f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","unstake(address,address,uint256)":"60829f8a","upgradeToAndCall(address,bytes)":"4f1ef286","whitelistAddress(address)":"41566585"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodianTransferAmountMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedInnerCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisAlreadyAccepted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakeExceedsGenesisStake\",\"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\":\"attester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstake\",\"type\":\"uint256\"}],\"name\":\"AttesterEpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"EpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"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\":[],\"name\":\"WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"currentEpochByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"domainGenesisAccepted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"epochDurationByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"epochStakesByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"epochTotalStakeByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"epochUnstakesByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getAttestersByDomain\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCurrentEpochStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCurrentEpochUnstake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getCustodiansByDomain\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochByBlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextEpochByBlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeAtEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getTotalStakeForCurrentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getTotalStakeForEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstakeAtEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"registerDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"removeAddressFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"reward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollOverEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"}],\"name\":\"slash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"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\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"whitelistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"FailedInnerCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call, an admin role bearer except when using {AccessControl-_setupRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC1822 {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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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/staking/MovementStaking.sol\":\"MovementStaking\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/forge-std/src/console.sol\":{\"keccak256\":\"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194\",\"dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930\",\"dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040\",\"dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45\",\"dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26\",\"dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9\",\"dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f\",\"dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a\",\"dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850\",\"dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d\",\"dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0\",\"dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245\",\"dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02\",\"dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c\",\"dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875\",\"dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1\",\"dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xa71627f087feb5ef56bb499624a1034769670f11acdc2160a59df9a9b8694bd3\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://20de6db00ce5e3a8b4638f5c25b6fefce15f1fc356221625245d00250056347c\",\"dweb:/ipfs/QmdEodpmEbBMxLeFSB63we5fMkGzdktpwifMU7GJ6Ffwrx\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0x9ca2df17c7dec2b75cc96453c60ef64a570ae1adf429d1a92e879127616af4af\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0d53c127b022fd35429ea183b0f1882bb03a62ed4e7e8e79f7058421fe49a947\",\"dweb:/ipfs/QmUMhEebucKiE2MedG9B18vcJMozwQ8yQFwV364Lnrjjej\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x7f4fcc5c5b4a9c21775085061449a7dd6ee98ed46975c8891ccccc2670cc4587\",\"urls\":[\"bzz-raw://46a2d0689394f90426c85b4d260dc00396c4f065d6cddcd01aff8e95742ebbf5\",\"dweb:/ipfs/QmVZihDFeiz6kpo2bS6TBePkARXJPhdvwELZjYjMnnztAQ\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0x67dcaae55138dda0f6fb9cce7d00b21b1dcf48144d0442073bec83aedbd73ca6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://009d22618ed30e84b0839edbe7bd1a18afe7073a62477667bf96d765428385b7\",\"dweb:/ipfs/QmNzA9RjM6SxVJYWohq7JbLvyBrhzzjzQQwBfArBQqCNAQ\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CustodianTransferAmountMismatch"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedInnerCall"},{"inputs":[],"type":"error","name":"GenesisAlreadyAccepted"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"StakeExceedsGenesisStake"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstake","type":"uint256","indexed":false}],"type":"event","name":"AttesterEpochRolledOver","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterStaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterUnstaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false}],"type":"event","name":"EpochRolledOver","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"currentEpochByDomain","outputs":[{"internalType":"uint256","name":"currentEpoch","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"domainGenesisAccepted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"epochDurationByDomain","outputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"epochStakesByDomain","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"epochTotalStakeByDomain","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"epochUnstakesByDomain","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getAttestersByDomain","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCurrentEpochStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCurrentEpochUnstake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodiansByDomain","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochByBlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextEpochByBlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeAtEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalStakeForCurrentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getTotalStakeForEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstakeAtEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"registerDomain"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAddressFromWhitelist"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"reward"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"rollOverEpoch"},{"inputs":[{"internalType":"address[]","name":"custodians","type":"address[]"},{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"refundAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"slash"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"contract IERC20","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"stake"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unstake"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelistAddress"}],"devdoc":{"kind":"dev","methods":{"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"proxiableUUID()":{"details":"Implementation of the ERC1822 {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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/staking/MovementStaking.sol":"MovementStaking"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/forge-std/src/console.sol":{"keccak256":"0xf61cb43a94d8318049d0a7f567af8c0aa952b5762a43851b130b90b3fcde0c6a","urls":["bzz-raw://53a52c6c3aeb22f7a18f53fca16af590308a8e3e5507e74df9b8e2561c932194","dweb:/ipfs/QmaaXuY8mC66YoE2xyZdWuLHXqAxLjbnNxiofx8BTP1MRn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0x3f13b947637c4969c0644cab4ef399cdc4b67f101463b8775c5a43b118558e53","urls":["bzz-raw://c6683e6ade6985d394d32baaef5eea0d8b9ff0b3eca86ae413d6cdde114a9930","dweb:/ipfs/QmdBE8T1BTddZxpdECMsb3KiCFyjNWmxcCddYrWFTXmWPj"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x9a1766b1921bf91b3e61eb53c7a6e70725254befd4bdcbbcd3af40bd9f66856f","urls":["bzz-raw://29bf2fa41a172086a665c9738377b93655aa4b1ffda9fe839c8bdf646f185040","dweb:/ipfs/QmeB21qDuo8WPQSrqXJbQmWHKsdeocGNSUWLhCwniVejrt"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xdaba3f7c42c55b2896353f32bd27d4d5f8bae741b3b05d4c53f67abc4dc47ce8","urls":["bzz-raw://1fa2e61141c602510bcd2cd936ed9561922ac8772a9b9c9a9db091a74e354a45","dweb:/ipfs/QmcHQDDoEBwJmwUbzoVkytvJsBx3KVHYFFnDkvRGWh9Wmh"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xb6b36edd6a2999fd243ff226d6cbf84bd71af2432bbd0dfe19392996a1d9cb41","urls":["bzz-raw://1fd2f35495652e57e3f99bc6c510bc5f7dd398a176ea2e72d8ed730aebc6ca26","dweb:/ipfs/QmTQV6X4gkikTib49cho5iDX3JvSQbdsoEChoDwrk3CbbH"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0x2a1f9944df2015c081d89cd41ba22ffaf10aa6285969f0dc612b235cc448999c","urls":["bzz-raw://ef381843676aec64421200ee85eaa0b1356a35f28b9fc67e746a6bbb832077d9","dweb:/ipfs/QmY8aorMYA2TeTCnu6ejDjzb4rW4t7TCtW4GZ6LoxTFm7v"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x60c65f701957fdd6faea1acb0bb45825791d473693ed9ecb34726fdfaa849dd7","urls":["bzz-raw://ea290300e0efc4d901244949dc4d877fd46e6c5e43dc2b26620e8efab3ab803f","dweb:/ipfs/QmcLLJppxKeJWqHxE2CUkcfhuRTgHSn8J4kijcLa5MYhSt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x06a78f9b3ee3e6d0eb4e4cd635ba49960bea34cac1db8c0a27c75f2319f1fd65","urls":["bzz-raw://547d21aa17f4f3f1a1a7edf7167beff8dd9496a0348d5588f15cc8a4b29d052a","dweb:/ipfs/QmT16JtRQSWNpLo9W23jr6CzaMuTAcQcjJJcdRd8HLJ6cE"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0xaa761817f6cd7892fcf158b3c776b34551cde36f48ff9703d53898bc45a94ea2","urls":["bzz-raw://0ad7c8d4d08938c8dfc43d75a148863fb324b80cf53e0a36f7e5a4ac29008850","dweb:/ipfs/QmcrhfPgVNf5mkdhQvy1pMv51TFokD3Y4Wa5WZhFqVh8UV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x6008dabfe393240d73d7dd7688033f72740d570aa422254d29a7dce8568f3aff","urls":["bzz-raw://f5196ec75139918c6c7bb4251b36395e668f1fa6d206beba7e7520e74913940d","dweb:/ipfs/QmSyqjksXxmm2mCG6qRd1yuwLykypkSVBbnBnGqJRcuJMi"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x37bb49513c49c87c4642a891b13b63571bc87013dde806617aa1efb54605f386","urls":["bzz-raw://b3036b3a83b7c48f96641f2a9002b9f2dcb6a5958dd670894ada21ae8229b3d0","dweb:/ipfs/QmUNfSBdoVtjhETaUJCYcaC7pTMgbhht926tJ2uXJbiVd3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaf28a975a78550e45f65e559a3ad6a5ad43b9b8a37366999abd1b7084eb70721","urls":["bzz-raw://b7bd24e224f67f65bfadf85dc2929fa965456bb2415478bd0125471b5ce35245","dweb:/ipfs/QmRaydGr8BTHs1kvaZfsNU69pKzUAGFrvABn1KiRSbE51y"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xf980daa263b661ab8ddee7d4fd833c7da7e7995e2c359ff1f17e67e4112f2236","urls":["bzz-raw://7448ab095d6940130bcf76ba47a2eab14148c83119523b93dd89f6d84edd6c02","dweb:/ipfs/QmawrZ4voKQjH3oomXT3Kuheb3Mnmo2VvVpxg8Ne5UJUrd"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0x32ba59b4b7299237c8ba56319110989d7978a039faf754793064e967e5894418","urls":["bzz-raw://1ae50c8b562427df610cc4540c9bf104acca7ef8e2dcae567ae7e52272281e9c","dweb:/ipfs/QmTHiadFCSJUPpRjNegc5SahmeU8bAoY8i9Aq6tVscbcKR"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x005ec64c6313f0555d59e278f9a7a5ab2db5bdc72a027f255a37c327af1ec02d","urls":["bzz-raw://4ece9f0b9c8daca08c76b6b5405a6446b6f73b3a15fab7ff56e296cbd4a2c875","dweb:/ipfs/QmQyRpyPRL5SQuAgj6SHmbir3foX65FJjbVTTQrA2EFg6L"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol":{"keccak256":"0x86c1470cbfd878491e5de030072b647352d36bd27122cffb928970b1945282aa","urls":["bzz-raw://ad85dd393ee0a1917c57046abc5155f51f77844b2c6a42c05c1b8dd26d6ff3c1","dweb:/ipfs/QmNqYc8To2NdnpP6E1tGz7t6A7beuENde5yovwov5pW1fA"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xa71627f087feb5ef56bb499624a1034769670f11acdc2160a59df9a9b8694bd3","urls":["bzz-raw://20de6db00ce5e3a8b4638f5c25b6fefce15f1fc356221625245d00250056347c","dweb:/ipfs/QmdEodpmEbBMxLeFSB63we5fMkGzdktpwifMU7GJ6Ffwrx"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0x9ca2df17c7dec2b75cc96453c60ef64a570ae1adf429d1a92e879127616af4af","urls":["bzz-raw://0d53c127b022fd35429ea183b0f1882bb03a62ed4e7e8e79f7058421fe49a947","dweb:/ipfs/QmUMhEebucKiE2MedG9B18vcJMozwQ8yQFwV364Lnrjjej"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x7f4fcc5c5b4a9c21775085061449a7dd6ee98ed46975c8891ccccc2670cc4587","urls":["bzz-raw://46a2d0689394f90426c85b4d260dc00396c4f065d6cddcd01aff8e95742ebbf5","dweb:/ipfs/QmVZihDFeiz6kpo2bS6TBePkARXJPhdvwELZjYjMnnztAQ"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0x67dcaae55138dda0f6fb9cce7d00b21b1dcf48144d0442073bec83aedbd73ca6","urls":["bzz-raw://009d22618ed30e84b0839edbe7bd1a18afe7073a62477667bf96d765428385b7","dweb:/ipfs/QmNzA9RjM6SxVJYWohq7JbLvyBrhzzjzQQwBfArBQqCNAQ"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":56570,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"token","offset":0,"slot":"0","type":"t_contract(IERC20)43663"},{"astId":56574,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"epochDurationByDomain","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":56578,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"currentEpochByDomain","offset":0,"slot":"2","type":"t_mapping(t_address,t_uint256)"},{"astId":56583,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"attestersByDomain","offset":0,"slot":"3","type":"t_mapping(t_address,t_struct(AddressSet)46720_storage)"},{"astId":56588,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"custodiansByDomain","offset":0,"slot":"4","type":"t_mapping(t_address,t_struct(AddressSet)46720_storage)"},{"astId":56598,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"epochStakesByDomain","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256))))"},{"astId":56608,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"epochUnstakesByDomain","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256))))"},{"astId":56616,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"epochTotalStakeByDomain","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))"},{"astId":56620,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"domainGenesisAccepted","offset":0,"slot":"8","type":"t_mapping(t_address,t_bool)"},{"astId":44354,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_status","offset":0,"slot":"9","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_bytes32)dyn_storage":{"encoding":"dynamic_array","label":"bytes32[]","numberOfBytes":"32","base":"t_bytes32"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(IERC20)43663":{"encoding":"inplace","label":"contract IERC20","numberOfBytes":"20"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256))))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256)))"},"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => uint256)))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},"t_mapping(t_address,t_struct(AddressSet)46720_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct EnumerableSet.AddressSet)","numberOfBytes":"32","value":"t_struct(AddressSet)46720_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_uint256)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256)))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => mapping(address => uint256)))","numberOfBytes":"32","value":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_struct(AddressSet)46720_storage":{"encoding":"inplace","label":"struct EnumerableSet.AddressSet","numberOfBytes":"64","members":[{"astId":46719,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_inner","offset":0,"slot":"0","type":"t_struct(Set)46405_storage"}]},"t_struct(Set)46405_storage":{"encoding":"inplace","label":"struct EnumerableSet.Set","numberOfBytes":"64","members":[{"astId":46400,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_values","offset":0,"slot":"0","type":"t_array(t_bytes32)dyn_storage"},{"astId":46404,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_positions","offset":0,"slot":"1","type":"t_mapping(t_bytes32,t_uint256)"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/staking/MovementStaking.sol","id":56551,"exportedSymbols":{"BaseStaking":[56681],"EnumerableSet":[47007],"ICustodianToken":[57570],"IERC20":[43663],"IMovementStaking":[56904],"Math":[46289],"MovementStaking":[56550],"MovementStakingStorage":[56626],"ReentrancyGuard":[44412],"SafeERC20":[44015],"console":[24306]},"nodeType":"SourceUnit","src":"39:18632:109","nodes":[{"id":55258,"nodeType":"PragmaDirective","src":"39:24:109","nodes":[],"literals":["solidity","^","0.8",".13"]},{"id":55259,"nodeType":"ImportDirective","src":"64:31:109","nodes":[],"absolutePath":"lib/forge-std/src/console.sol","file":"forge-std/console.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":24307,"symbolAliases":[],"unitAlias":""},{"id":55261,"nodeType":"ImportDirective","src":"96:51:109","nodes":[],"absolutePath":"src/staking/base/BaseStaking.sol","file":"./base/BaseStaking.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":56682,"symbolAliases":[{"foreign":{"id":55260,"name":"BaseStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56681,"src":"104:11:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55263,"nodeType":"ImportDirective","src":"148:82:109","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":44016,"symbolAliases":[{"foreign":{"id":55262,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44015,"src":"156:9:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55265,"nodeType":"ImportDirective","src":"231:69:109","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":42721,"symbolAliases":[{"foreign":{"id":55264,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43663,"src":"239:6:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55267,"nodeType":"ImportDirective","src":"301:70:109","nodes":[],"absolutePath":"src/token/custodian/CustodianToken.sol","file":"../token/custodian/CustodianToken.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":57906,"symbolAliases":[{"foreign":{"id":55266,"name":"ICustodianToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57570,"src":"309:15:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55269,"nodeType":"ImportDirective","src":"372:65:109","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":46290,"symbolAliases":[{"foreign":{"id":55268,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46289,"src":"380:4:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55272,"nodeType":"ImportDirective","src":"438:83:109","nodes":[],"absolutePath":"src/staking/MovementStakingStorage.sol","file":"./MovementStakingStorage.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":56627,"symbolAliases":[{"foreign":{"id":55270,"name":"MovementStakingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56626,"src":"446:22:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":55271,"name":"EnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47007,"src":"470:13:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55274,"nodeType":"ImportDirective","src":"522:67:109","nodes":[],"absolutePath":"src/staking/interfaces/IMovementStaking.sol","file":"./interfaces/IMovementStaking.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":56905,"symbolAliases":[{"foreign":{"id":55273,"name":"IMovementStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56904,"src":"530:16:109","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":55275,"nodeType":"ImportDirective","src":"590:59:109","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","nameLocation":"-1:-1:-1","scope":56551,"sourceUnit":44413,"symbolAliases":[],"unitAlias":""},{"id":56550,"nodeType":"ContractDefinition","src":"651:18019:109","nodes":[{"id":55287,"nodeType":"UsingForDirective","src":"772:49:109","nodes":[],"global":false,"libraryName":{"id":55284,"name":"EnumerableSet","nameLocations":["778:13:109"],"nodeType":"IdentifierPath","referencedDeclaration":47007,"src":"778:13:109"},"typeName":{"id":55286,"nodeType":"UserDefinedTypeName","pathNode":{"id":55285,"name":"EnumerableSet.AddressSet","nameLocations":["796:13:109","810:10:109"],"nodeType":"IdentifierPath","referencedDeclaration":46720,"src":"796:24:109"},"referencedDeclaration":46720,"src":"796:24:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"id":55303,"nodeType":"FunctionDefinition","src":"827:125:109","nodes":[],"body":{"id":55302,"nodeType":"Block","src":"881:71:109","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":55295,"name":"__BaseStaking_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56669,"src":"891:28:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":55296,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"891:30:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55297,"nodeType":"ExpressionStatement","src":"891:30:109"},{"expression":{"id":55300,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":55298,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"931:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55299,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55290,"src":"939:6:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"src":"931:14:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"id":55301,"nodeType":"ExpressionStatement","src":"931:14:109"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":55293,"kind":"modifierInvocation","modifierName":{"id":55292,"name":"initializer","nameLocations":["869:11:109"],"nodeType":"IdentifierPath","referencedDeclaration":39493,"src":"869:11:109"},"nodeType":"ModifierInvocation","src":"869:11:109"}],"name":"initialize","nameLocation":"836:10:109","parameters":{"id":55291,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55290,"mutability":"mutable","name":"_token","nameLocation":"854:6:109","nodeType":"VariableDeclaration","scope":55303,"src":"847:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"},"typeName":{"id":55289,"nodeType":"UserDefinedTypeName","pathNode":{"id":55288,"name":"IERC20","nameLocations":["847:6:109"],"nodeType":"IdentifierPath","referencedDeclaration":43663,"src":"847:6:109"},"referencedDeclaration":43663,"src":"847:6:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"846:15:109"},"returnParameters":{"id":55294,"nodeType":"ParameterList","parameters":[],"src":"881:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":55347,"nodeType":"FunctionDefinition","src":"958:349:109","nodes":[],"body":{"id":55346,"nodeType":"Block","src":"1080:227:109","nodes":[],"statements":[{"assignments":[55314],"declarations":[{"constant":false,"id":55314,"mutability":"mutable","name":"domain","nameLocation":"1098:6:109","nodeType":"VariableDeclaration","scope":55346,"src":"1090:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55313,"name":"address","nodeType":"ElementaryTypeName","src":"1090:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55317,"initialValue":{"expression":{"id":55315,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1107:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1111:6:109","memberName":"sender","nodeType":"MemberAccess","src":"1107:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1090:27:109"},{"expression":{"id":55322,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":55318,"name":"epochDurationByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56574,"src":"1127:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55320,"indexExpression":{"id":55319,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55314,"src":"1149:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1127:29:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55321,"name":"epochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55305,"src":"1159:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1127:45:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55323,"nodeType":"ExpressionStatement","src":"1127:45:109"},{"body":{"id":55344,"nodeType":"Block","src":"1231:70:109","statements":[{"expression":{"arguments":[{"baseExpression":{"id":55339,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55308,"src":"1276:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":55341,"indexExpression":{"id":55340,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55325,"src":"1287:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1276:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":55335,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"1245:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55337,"indexExpression":{"id":55336,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55314,"src":"1264:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1245:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55338,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1272:3:109","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":46747,"src":"1245:30:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$46720_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":55342,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1245:45:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55343,"nodeType":"ExpressionStatement","src":"1245:45:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55328,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55325,"src":"1203:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":55329,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55308,"src":"1207:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":55330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1218:6:109","memberName":"length","nodeType":"MemberAccess","src":"1207:17:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1203:21:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55345,"initializationExpression":{"assignments":[55325],"declarations":[{"constant":false,"id":55325,"mutability":"mutable","name":"i","nameLocation":"1196:1:109","nodeType":"VariableDeclaration","scope":55345,"src":"1188:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55324,"name":"uint256","nodeType":"ElementaryTypeName","src":"1188:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55327,"initialValue":{"hexValue":"30","id":55326,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1200:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1188:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1226:3:109","subExpression":{"id":55332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55325,"src":"1226:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55334,"nodeType":"ExpressionStatement","src":"1226:3:109"},"nodeType":"ForStatement","src":"1183:118:109"}]},"baseFunctions":[56693],"functionSelector":"d37304f8","implemented":true,"kind":"function","modifiers":[{"id":55311,"kind":"modifierInvocation","modifierName":{"id":55310,"name":"nonReentrant","nameLocations":["1067:12:109"],"nodeType":"IdentifierPath","referencedDeclaration":44376,"src":"1067:12:109"},"nodeType":"ModifierInvocation","src":"1067:12:109"}],"name":"registerDomain","nameLocation":"967:14:109","parameters":{"id":55309,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55305,"mutability":"mutable","name":"epochDuration","nameLocation":"999:13:109","nodeType":"VariableDeclaration","scope":55347,"src":"991:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55304,"name":"uint256","nodeType":"ElementaryTypeName","src":"991:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55308,"mutability":"mutable","name":"custodians","nameLocation":"1041:10:109","nodeType":"VariableDeclaration","scope":55347,"src":"1022:29:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55306,"name":"address","nodeType":"ElementaryTypeName","src":"1022:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55307,"nodeType":"ArrayTypeName","src":"1022:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"981:76:109"},"returnParameters":{"id":55312,"nodeType":"ParameterList","parameters":[],"src":"1080:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":55400,"nodeType":"FunctionDefinition","src":"1313:522:109","nodes":[],"body":{"id":55399,"nodeType":"Block","src":"1413:422:109","nodes":[],"statements":[{"assignments":[55359],"declarations":[{"constant":false,"id":55359,"mutability":"mutable","name":"custodians","nameLocation":"1568:10:109","nodeType":"VariableDeclaration","scope":55399,"src":"1551:27:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55357,"name":"address","nodeType":"ElementaryTypeName","src":"1551:7:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55358,"nodeType":"ArrayTypeName","src":"1551:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":55369,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":55363,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"1608:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55365,"indexExpression":{"id":55364,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55349,"src":"1627:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1608:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55366,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1635:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"1608:33:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":55367,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1608:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55362,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1581:13:109","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":55360,"name":"address","nodeType":"ElementaryTypeName","src":"1585:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55361,"nodeType":"ArrayTypeName","src":"1585:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":55368,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1581:72:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1551:102:109"},{"body":{"id":55395,"nodeType":"Block","src":"1729:73:109","statements":[{"expression":{"id":55393,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":55384,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55359,"src":"1743:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":55386,"indexExpression":{"id":55385,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55371,"src":"1754:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1743:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55371,"src":"1789:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":55387,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"1759:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55389,"indexExpression":{"id":55388,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55349,"src":"1778:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1759:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55390,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1786:2:109","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":46843,"src":"1759:29:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":55392,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1759:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1743:48:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55394,"nodeType":"ExpressionStatement","src":"1743:48:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55374,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55371,"src":"1683:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":55375,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"1687:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55377,"indexExpression":{"id":55376,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55349,"src":"1706:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1687:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55378,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1714:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"1687:33:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":55379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1687:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1683:39:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55396,"initializationExpression":{"assignments":[55371],"declarations":[{"constant":false,"id":55371,"mutability":"mutable","name":"i","nameLocation":"1676:1:109","nodeType":"VariableDeclaration","scope":55396,"src":"1668:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55370,"name":"uint256","nodeType":"ElementaryTypeName","src":"1668:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55373,"initialValue":{"hexValue":"30","id":55372,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1680:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1668:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1724:3:109","subExpression":{"id":55381,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55371,"src":"1724:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55383,"nodeType":"ExpressionStatement","src":"1724:3:109"},"nodeType":"ForStatement","src":"1663:139:109"},{"expression":{"id":55397,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55359,"src":"1818:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":55354,"id":55398,"nodeType":"Return","src":"1811:17:109"}]},"baseFunctions":[56819],"functionSelector":"d5ca03de","implemented":true,"kind":"function","modifiers":[],"name":"getCustodiansByDomain","nameLocation":"1322:21:109","parameters":{"id":55350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55349,"mutability":"mutable","name":"domain","nameLocation":"1361:6:109","nodeType":"VariableDeclaration","scope":55400,"src":"1353:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55348,"name":"address","nodeType":"ElementaryTypeName","src":"1353:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1343:30:109"},"returnParameters":{"id":55354,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55353,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55400,"src":"1395:16:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55351,"name":"address","nodeType":"ElementaryTypeName","src":"1395:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55352,"nodeType":"ArrayTypeName","src":"1395:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1394:18:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55453,"nodeType":"FunctionDefinition","src":"1841:387:109","nodes":[],"body":{"id":55452,"nodeType":"Block","src":"1940:288:109","nodes":[],"statements":[{"assignments":[55412],"declarations":[{"constant":false,"id":55412,"mutability":"mutable","name":"attesters","nameLocation":"1967:9:109","nodeType":"VariableDeclaration","scope":55452,"src":"1950:26:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55410,"name":"address","nodeType":"ElementaryTypeName","src":"1950:7:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55411,"nodeType":"ArrayTypeName","src":"1950:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":55422,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":55416,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"2006:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55418,"indexExpression":{"id":55417,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55402,"src":"2024:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2006:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55419,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2032:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"2006:32:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":55420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2006:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55415,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1979:13:109","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":55413,"name":"address","nodeType":"ElementaryTypeName","src":"1983:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55414,"nodeType":"ArrayTypeName","src":"1983:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":55421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1979:71:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1950:100:109"},{"body":{"id":55448,"nodeType":"Block","src":"2125:71:109","statements":[{"expression":{"id":55446,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":55437,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55412,"src":"2139:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":55439,"indexExpression":{"id":55438,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55424,"src":"2149:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2139:12:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55444,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55424,"src":"2183:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":55440,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"2154:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55442,"indexExpression":{"id":55441,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55402,"src":"2172:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2154:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55443,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2180:2:109","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":46843,"src":"2154:28:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":55445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2139:46:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55447,"nodeType":"ExpressionStatement","src":"2139:46:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55433,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55427,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55424,"src":"2080:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":55428,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"2084:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55430,"indexExpression":{"id":55429,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55402,"src":"2102:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2084:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55431,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2110:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"2084:32:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":55432,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2084:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2080:38:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55449,"initializationExpression":{"assignments":[55424],"declarations":[{"constant":false,"id":55424,"mutability":"mutable","name":"i","nameLocation":"2073:1:109","nodeType":"VariableDeclaration","scope":55449,"src":"2065:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55423,"name":"uint256","nodeType":"ElementaryTypeName","src":"2065:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55426,"initialValue":{"hexValue":"30","id":55425,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2077:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2065:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55435,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2120:3:109","subExpression":{"id":55434,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55424,"src":"2120:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55436,"nodeType":"ExpressionStatement","src":"2120:3:109"},"nodeType":"ForStatement","src":"2060:136:109"},{"expression":{"id":55450,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55412,"src":"2212:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":55407,"id":55451,"nodeType":"Return","src":"2205:16:109"}]},"baseFunctions":[56827],"functionSelector":"2924b73b","implemented":true,"kind":"function","modifiers":[],"name":"getAttestersByDomain","nameLocation":"1850:20:109","parameters":{"id":55403,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55402,"mutability":"mutable","name":"domain","nameLocation":"1888:6:109","nodeType":"VariableDeclaration","scope":55453,"src":"1880:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55401,"name":"address","nodeType":"ElementaryTypeName","src":"1880:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1870:30:109"},"returnParameters":{"id":55407,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55406,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55453,"src":"1922:16:109","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":55404,"name":"address","nodeType":"ElementaryTypeName","src":"1922:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":55405,"nodeType":"ArrayTypeName","src":"1922:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1921:18:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55554,"nodeType":"FunctionDefinition","src":"2234:1200:109","nodes":[],"body":{"id":55553,"nodeType":"Block","src":"2287:1147:109","nodes":[],"statements":[{"assignments":[55459],"declarations":[{"constant":false,"id":55459,"mutability":"mutable","name":"domain","nameLocation":"2305:6:109","nodeType":"VariableDeclaration","scope":55553,"src":"2297:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55458,"name":"address","nodeType":"ElementaryTypeName","src":"2297:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55462,"initialValue":{"expression":{"id":55460,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2314:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55461,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2318:6:109","memberName":"sender","nodeType":"MemberAccess","src":"2314:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2297:27:109"},{"condition":{"baseExpression":{"id":55463,"name":"domainGenesisAccepted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56620,"src":"2338:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55465,"indexExpression":{"id":55464,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2360:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2338:29:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55469,"nodeType":"IfStatement","src":"2334:66:109","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":55466,"name":"GenesisAlreadyAccepted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56903,"src":"2376:22:109","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":55467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2376:24:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":55468,"nodeType":"RevertStatement","src":"2369:31:109"}},{"expression":{"id":55474,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":55470,"name":"domainGenesisAccepted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56620,"src":"2410:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":55472,"indexExpression":{"id":55471,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2432:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2410:29:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":55473,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"2442:4:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"2410:36:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55475,"nodeType":"ExpressionStatement","src":"2410:36:109"},{"expression":{"id":55482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":55476,"name":"currentEpochByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56578,"src":"2525:20:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55478,"indexExpression":{"id":55477,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2546:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2525:28:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":55480,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2576:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55479,"name":"getEpochByBlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55719,"src":"2556:19:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55481,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2556:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2525:58:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55483,"nodeType":"ExpressionStatement","src":"2525:58:109"},{"body":{"id":55551,"nodeType":"Block","src":"2659:769:109","statements":[{"assignments":[55499],"declarations":[{"constant":false,"id":55499,"mutability":"mutable","name":"attester","nameLocation":"2681:8:109","nodeType":"VariableDeclaration","scope":55551,"src":"2673:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55498,"name":"address","nodeType":"ElementaryTypeName","src":"2673:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55506,"initialValue":{"arguments":[{"id":55504,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55485,"src":"2721:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":55500,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"2692:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55502,"indexExpression":{"id":55501,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2710:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2692:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55503,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2718:2:109","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":46843,"src":"2692:28:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":55505,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2692:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2673:50:109"},{"body":{"id":55549,"nodeType":"Block","src":"2804:614:109","statements":[{"assignments":[55522],"declarations":[{"constant":false,"id":55522,"mutability":"mutable","name":"custodian","nameLocation":"2830:9:109","nodeType":"VariableDeclaration","scope":55549,"src":"2822:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55521,"name":"address","nodeType":"ElementaryTypeName","src":"2822:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":55529,"initialValue":{"arguments":[{"id":55527,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55508,"src":"2872:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":55523,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"2842:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55525,"indexExpression":{"id":55524,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2861:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2842:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55526,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2869:2:109","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":46843,"src":"2842:29:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":55528,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2842:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"2822:52:109"},{"assignments":[55531],"declarations":[{"constant":false,"id":55531,"mutability":"mutable","name":"attesterStake","nameLocation":"2959:13:109","nodeType":"VariableDeclaration","scope":55549,"src":"2951:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55530,"name":"uint256","nodeType":"ElementaryTypeName","src":"2951:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55538,"initialValue":{"arguments":[{"id":55533,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"3012:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":55534,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3040:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":55535,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55522,"src":"3063:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55536,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55499,"src":"3094:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":55532,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55797,"src":"2975:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":55537,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2975:145:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2951:169:109"},{"expression":{"arguments":[{"id":55540,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"3238:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55542,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"3282:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55541,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"3266:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55543,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3266:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":55544,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55522,"src":"3311:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55545,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55499,"src":"3342:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55546,"name":"attesterStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55531,"src":"3372:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55539,"name":"_addStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55590,"src":"3207:9:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":55547,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3207:196:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55548,"nodeType":"ExpressionStatement","src":"3207:196:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55517,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55511,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55508,"src":"2758:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":55512,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"2762:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55514,"indexExpression":{"id":55513,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2781:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2762:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55515,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2789:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"2762:33:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":55516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2762:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2758:39:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55550,"initializationExpression":{"assignments":[55508],"declarations":[{"constant":false,"id":55508,"mutability":"mutable","name":"j","nameLocation":"2751:1:109","nodeType":"VariableDeclaration","scope":55550,"src":"2743:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55507,"name":"uint256","nodeType":"ElementaryTypeName","src":"2743:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55510,"initialValue":{"hexValue":"30","id":55509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2755:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2743:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2799:3:109","subExpression":{"id":55518,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55508,"src":"2799:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55520,"nodeType":"ExpressionStatement","src":"2799:3:109"},"nodeType":"ForStatement","src":"2738:680:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55494,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55488,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55485,"src":"2614:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":55489,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"2618:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55491,"indexExpression":{"id":55490,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55459,"src":"2636:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2618:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2644:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"2618:32:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":55493,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2618:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2614:38:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55552,"initializationExpression":{"assignments":[55485],"declarations":[{"constant":false,"id":55485,"mutability":"mutable","name":"i","nameLocation":"2607:1:109","nodeType":"VariableDeclaration","scope":55552,"src":"2599:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55484,"name":"uint256","nodeType":"ElementaryTypeName","src":"2599:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55487,"initialValue":{"hexValue":"30","id":55486,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2611:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2599:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":55496,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2654:3:109","subExpression":{"id":55495,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55485,"src":"2654:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55497,"nodeType":"ExpressionStatement","src":"2654:3:109"},"nodeType":"ForStatement","src":"2594:834:109"}]},"baseFunctions":[56696],"functionSelector":"92a2ebf3","implemented":true,"kind":"function","modifiers":[{"id":55456,"kind":"modifierInvocation","modifierName":{"id":55455,"name":"nonReentrant","nameLocations":["2274:12:109"],"nodeType":"IdentifierPath","referencedDeclaration":44376,"src":"2274:12:109"},"nodeType":"ModifierInvocation","src":"2274:12:109"}],"name":"acceptGenesisCeremony","nameLocation":"2243:21:109","parameters":{"id":55454,"nodeType":"ParameterList","parameters":[],"src":"2264:2:109"},"returnParameters":{"id":55457,"nodeType":"ParameterList","parameters":[],"src":"2287:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":55590,"nodeType":"FunctionDefinition","src":"3440:309:109","nodes":[],"body":{"id":55589,"nodeType":"Block","src":"3598:151:109","nodes":[],"statements":[{"expression":{"id":55577,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55567,"name":"epochStakesByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56598,"src":"3608:19:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":55572,"indexExpression":{"id":55568,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55556,"src":"3628:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3608:27:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":55573,"indexExpression":{"id":55569,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55558,"src":"3636:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3608:34:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":55574,"indexExpression":{"id":55570,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55560,"src":"3643:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3608:45:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55575,"indexExpression":{"id":55571,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55562,"src":"3654:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3608:55:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":55576,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"3667:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3608:65:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55578,"nodeType":"ExpressionStatement","src":"3608:65:109"},{"expression":{"id":55587,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55579,"name":"epochTotalStakeByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56616,"src":"3683:23:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => uint256)))"}},"id":55583,"indexExpression":{"id":55580,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55556,"src":"3707:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3683:31:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":55584,"indexExpression":{"id":55581,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55558,"src":"3715:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3683:38:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55585,"indexExpression":{"id":55582,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55560,"src":"3722:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3683:49:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":55586,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55564,"src":"3736:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3683:59:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55588,"nodeType":"ExpressionStatement","src":"3683:59:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_addStake","nameLocation":"3449:9:109","parameters":{"id":55565,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55556,"mutability":"mutable","name":"domain","nameLocation":"3476:6:109","nodeType":"VariableDeclaration","scope":55590,"src":"3468:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55555,"name":"address","nodeType":"ElementaryTypeName","src":"3468:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55558,"mutability":"mutable","name":"epoch","nameLocation":"3500:5:109","nodeType":"VariableDeclaration","scope":55590,"src":"3492:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55557,"name":"uint256","nodeType":"ElementaryTypeName","src":"3492:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55560,"mutability":"mutable","name":"custodian","nameLocation":"3523:9:109","nodeType":"VariableDeclaration","scope":55590,"src":"3515:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55559,"name":"address","nodeType":"ElementaryTypeName","src":"3515:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55562,"mutability":"mutable","name":"attester","nameLocation":"3550:8:109","nodeType":"VariableDeclaration","scope":55590,"src":"3542:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55561,"name":"address","nodeType":"ElementaryTypeName","src":"3542:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55564,"mutability":"mutable","name":"amount","nameLocation":"3576:6:109","nodeType":"VariableDeclaration","scope":55590,"src":"3568:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55563,"name":"uint256","nodeType":"ElementaryTypeName","src":"3568:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3458:130:109"},"returnParameters":{"id":55566,"nodeType":"ParameterList","parameters":[],"src":"3598:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":55626,"nodeType":"FunctionDefinition","src":"3755:312:109","nodes":[],"body":{"id":55625,"nodeType":"Block","src":"3916:151:109","nodes":[],"statements":[{"expression":{"id":55613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55603,"name":"epochStakesByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56598,"src":"3926:19:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":55608,"indexExpression":{"id":55604,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55592,"src":"3946:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3926:27:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":55609,"indexExpression":{"id":55605,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55594,"src":"3954:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3926:34:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":55610,"indexExpression":{"id":55606,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55596,"src":"3961:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3926:45:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55611,"indexExpression":{"id":55607,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55598,"src":"3972:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3926:55:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":55612,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55600,"src":"3985:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3926:65:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55614,"nodeType":"ExpressionStatement","src":"3926:65:109"},{"expression":{"id":55623,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55615,"name":"epochTotalStakeByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56616,"src":"4001:23:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => uint256)))"}},"id":55619,"indexExpression":{"id":55616,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55592,"src":"4025:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4001:31:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":55620,"indexExpression":{"id":55617,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55594,"src":"4033:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4001:38:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55621,"indexExpression":{"id":55618,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55596,"src":"4040:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4001:49:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":55622,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55600,"src":"4054:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4001:59:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55624,"nodeType":"ExpressionStatement","src":"4001:59:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeStake","nameLocation":"3764:12:109","parameters":{"id":55601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55592,"mutability":"mutable","name":"domain","nameLocation":"3794:6:109","nodeType":"VariableDeclaration","scope":55626,"src":"3786:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55591,"name":"address","nodeType":"ElementaryTypeName","src":"3786:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55594,"mutability":"mutable","name":"epoch","nameLocation":"3818:5:109","nodeType":"VariableDeclaration","scope":55626,"src":"3810:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55593,"name":"uint256","nodeType":"ElementaryTypeName","src":"3810:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55596,"mutability":"mutable","name":"custodian","nameLocation":"3841:9:109","nodeType":"VariableDeclaration","scope":55626,"src":"3833:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55595,"name":"address","nodeType":"ElementaryTypeName","src":"3833:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55598,"mutability":"mutable","name":"attester","nameLocation":"3868:8:109","nodeType":"VariableDeclaration","scope":55626,"src":"3860:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55597,"name":"address","nodeType":"ElementaryTypeName","src":"3860:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55600,"mutability":"mutable","name":"amount","nameLocation":"3894:6:109","nodeType":"VariableDeclaration","scope":55626,"src":"3886:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55599,"name":"uint256","nodeType":"ElementaryTypeName","src":"3886:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3776:130:109"},"returnParameters":{"id":55602,"nodeType":"ParameterList","parameters":[],"src":"3916:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":55652,"nodeType":"FunctionDefinition","src":"4073:244:109","nodes":[],"body":{"id":55651,"nodeType":"Block","src":"4233:84:109","nodes":[],"statements":[{"expression":{"id":55649,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55639,"name":"epochUnstakesByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56608,"src":"4243:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":55644,"indexExpression":{"id":55640,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55628,"src":"4265:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4243:29:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":55645,"indexExpression":{"id":55641,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55630,"src":"4273:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4243:36:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":55646,"indexExpression":{"id":55642,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55632,"src":"4280:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4243:47:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55647,"indexExpression":{"id":55643,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55634,"src":"4291:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4243:57:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":55648,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55636,"src":"4304:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4243:67:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55650,"nodeType":"ExpressionStatement","src":"4243:67:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_addUnstake","nameLocation":"4082:11:109","parameters":{"id":55637,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55628,"mutability":"mutable","name":"domain","nameLocation":"4111:6:109","nodeType":"VariableDeclaration","scope":55652,"src":"4103:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55627,"name":"address","nodeType":"ElementaryTypeName","src":"4103:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55630,"mutability":"mutable","name":"epoch","nameLocation":"4135:5:109","nodeType":"VariableDeclaration","scope":55652,"src":"4127:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55629,"name":"uint256","nodeType":"ElementaryTypeName","src":"4127:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55632,"mutability":"mutable","name":"custodian","nameLocation":"4158:9:109","nodeType":"VariableDeclaration","scope":55652,"src":"4150:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55631,"name":"address","nodeType":"ElementaryTypeName","src":"4150:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55634,"mutability":"mutable","name":"attester","nameLocation":"4185:8:109","nodeType":"VariableDeclaration","scope":55652,"src":"4177:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55633,"name":"address","nodeType":"ElementaryTypeName","src":"4177:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55636,"mutability":"mutable","name":"amount","nameLocation":"4211:6:109","nodeType":"VariableDeclaration","scope":55652,"src":"4203:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55635,"name":"uint256","nodeType":"ElementaryTypeName","src":"4203:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4093:130:109"},"returnParameters":{"id":55638,"nodeType":"ParameterList","parameters":[],"src":"4233:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":55678,"nodeType":"FunctionDefinition","src":"4323:247:109","nodes":[],"body":{"id":55677,"nodeType":"Block","src":"4486:84:109","nodes":[],"statements":[{"expression":{"id":55675,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55665,"name":"epochUnstakesByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56608,"src":"4496:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":55670,"indexExpression":{"id":55666,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55654,"src":"4518:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4496:29:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":55671,"indexExpression":{"id":55667,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55656,"src":"4526:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4496:36:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":55672,"indexExpression":{"id":55668,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55658,"src":"4533:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4496:47:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55673,"indexExpression":{"id":55669,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55660,"src":"4544:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4496:57:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":55674,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55662,"src":"4557:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4496:67:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55676,"nodeType":"ExpressionStatement","src":"4496:67:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeUnstake","nameLocation":"4332:14:109","parameters":{"id":55663,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55654,"mutability":"mutable","name":"domain","nameLocation":"4364:6:109","nodeType":"VariableDeclaration","scope":55678,"src":"4356:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55653,"name":"address","nodeType":"ElementaryTypeName","src":"4356:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55656,"mutability":"mutable","name":"epoch","nameLocation":"4388:5:109","nodeType":"VariableDeclaration","scope":55678,"src":"4380:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55655,"name":"uint256","nodeType":"ElementaryTypeName","src":"4380:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55658,"mutability":"mutable","name":"custodian","nameLocation":"4411:9:109","nodeType":"VariableDeclaration","scope":55678,"src":"4403:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55657,"name":"address","nodeType":"ElementaryTypeName","src":"4403:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55660,"mutability":"mutable","name":"attester","nameLocation":"4438:8:109","nodeType":"VariableDeclaration","scope":55678,"src":"4430:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55659,"name":"address","nodeType":"ElementaryTypeName","src":"4430:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55662,"mutability":"mutable","name":"amount","nameLocation":"4464:6:109","nodeType":"VariableDeclaration","scope":55678,"src":"4456:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55661,"name":"uint256","nodeType":"ElementaryTypeName","src":"4456:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4346:130:109"},"returnParameters":{"id":55664,"nodeType":"ParameterList","parameters":[],"src":"4486:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":55704,"nodeType":"FunctionDefinition","src":"4576:243:109","nodes":[],"body":{"id":55703,"nodeType":"Block","src":"4736:83:109","nodes":[],"statements":[{"expression":{"id":55701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55691,"name":"epochUnstakesByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56608,"src":"4746:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":55696,"indexExpression":{"id":55692,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55680,"src":"4768:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4746:29:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":55697,"indexExpression":{"id":55693,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55682,"src":"4776:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4746:36:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":55698,"indexExpression":{"id":55694,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55684,"src":"4783:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4746:47:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55699,"indexExpression":{"id":55695,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55686,"src":"4794:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4746:57:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":55700,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55688,"src":"4806:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4746:66:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55702,"nodeType":"ExpressionStatement","src":"4746:66:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setUnstake","nameLocation":"4585:11:109","parameters":{"id":55689,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55680,"mutability":"mutable","name":"domain","nameLocation":"4614:6:109","nodeType":"VariableDeclaration","scope":55704,"src":"4606:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55679,"name":"address","nodeType":"ElementaryTypeName","src":"4606:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55682,"mutability":"mutable","name":"epoch","nameLocation":"4638:5:109","nodeType":"VariableDeclaration","scope":55704,"src":"4630:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55681,"name":"uint256","nodeType":"ElementaryTypeName","src":"4630:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55684,"mutability":"mutable","name":"custodian","nameLocation":"4661:9:109","nodeType":"VariableDeclaration","scope":55704,"src":"4653:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55683,"name":"address","nodeType":"ElementaryTypeName","src":"4653:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55686,"mutability":"mutable","name":"attester","nameLocation":"4688:8:109","nodeType":"VariableDeclaration","scope":55704,"src":"4680:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55685,"name":"address","nodeType":"ElementaryTypeName","src":"4680:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55688,"mutability":"mutable","name":"amount","nameLocation":"4714:6:109","nodeType":"VariableDeclaration","scope":55704,"src":"4706:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55687,"name":"uint256","nodeType":"ElementaryTypeName","src":"4706:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4596:130:109"},"returnParameters":{"id":55690,"nodeType":"ParameterList","parameters":[],"src":"4736:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":55719,"nodeType":"FunctionDefinition","src":"4883:146:109","nodes":[],"body":{"id":55718,"nodeType":"Block","src":"4958:71:109","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55716,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":55711,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"4975:5:109","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":55712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4981:9:109","memberName":"timestamp","nodeType":"MemberAccess","src":"4975:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"baseExpression":{"id":55713,"name":"epochDurationByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56574,"src":"4993:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55715,"indexExpression":{"id":55714,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55706,"src":"5015:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4993:29:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4975:47:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55710,"id":55717,"nodeType":"Return","src":"4968:54:109"}]},"baseFunctions":[56703],"functionSelector":"c3471ff8","implemented":true,"kind":"function","modifiers":[],"name":"getEpochByBlockTime","nameLocation":"4892:19:109","parameters":{"id":55707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55706,"mutability":"mutable","name":"domain","nameLocation":"4920:6:109","nodeType":"VariableDeclaration","scope":55719,"src":"4912:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55705,"name":"address","nodeType":"ElementaryTypeName","src":"4912:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4911:16:109"},"returnParameters":{"id":55710,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55709,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55719,"src":"4949:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55708,"name":"uint256","nodeType":"ElementaryTypeName","src":"4949:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4948:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55731,"nodeType":"FunctionDefinition","src":"5103:123:109","nodes":[],"body":{"id":55730,"nodeType":"Block","src":"5174:52:109","nodes":[],"statements":[{"expression":{"baseExpression":{"id":55726,"name":"currentEpochByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56578,"src":"5191:20:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55728,"indexExpression":{"id":55727,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55721,"src":"5212:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5191:28:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55725,"id":55729,"nodeType":"Return","src":"5184:35:109"}]},"baseFunctions":[56710],"functionSelector":"4d3223a5","implemented":true,"kind":"function","modifiers":[],"name":"getCurrentEpoch","nameLocation":"5112:15:109","parameters":{"id":55722,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55721,"mutability":"mutable","name":"domain","nameLocation":"5136:6:109","nodeType":"VariableDeclaration","scope":55731,"src":"5128:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55720,"name":"address","nodeType":"ElementaryTypeName","src":"5128:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5127:16:109"},"returnParameters":{"id":55725,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55724,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55731,"src":"5165:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55723,"name":"uint256","nodeType":"ElementaryTypeName","src":"5165:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5164:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55752,"nodeType":"FunctionDefinition","src":"5259:154:109","nodes":[],"body":{"id":55751,"nodeType":"Block","src":"5327:86:109","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":55739,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55733,"src":"5360:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55738,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"5344:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5344:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55741,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5371:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5344:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":55745,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55733,"src":"5395:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55744,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"5379:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55746,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5379:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":55747,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5405:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5379:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55749,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5344:62:109","trueExpression":{"hexValue":"30","id":55743,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5375:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55737,"id":55750,"nodeType":"Return","src":"5337:69:109"}]},"baseFunctions":[56717],"functionSelector":"8489e580","implemented":true,"kind":"function","modifiers":[],"name":"getNextEpoch","nameLocation":"5268:12:109","parameters":{"id":55734,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55733,"mutability":"mutable","name":"domain","nameLocation":"5289:6:109","nodeType":"VariableDeclaration","scope":55752,"src":"5281:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55732,"name":"address","nodeType":"ElementaryTypeName","src":"5281:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5280:16:109"},"returnParameters":{"id":55737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55752,"src":"5318:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55735,"name":"uint256","nodeType":"ElementaryTypeName","src":"5318:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5317:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55773,"nodeType":"FunctionDefinition","src":"5419:195:109","nodes":[],"body":{"id":55772,"nodeType":"Block","src":"5512:102:109","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":55760,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55754,"src":"5557:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55759,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"5541:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55761,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5541:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":55762,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5568:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5541:28:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55769,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":55766,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55754,"src":"5596:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55765,"name":"getEpochByBlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55719,"src":"5576:19:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5576:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":55768,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5606:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"5576:31:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":55770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"5541:66:109","trueExpression":{"hexValue":"30","id":55764,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5572:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55758,"id":55771,"nodeType":"Return","src":"5522:85:109"}]},"baseFunctions":[56724],"functionSelector":"2c7785a8","implemented":true,"kind":"function","modifiers":[],"name":"getNextEpochByBlockTime","nameLocation":"5428:23:109","parameters":{"id":55755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55754,"mutability":"mutable","name":"domain","nameLocation":"5469:6:109","nodeType":"VariableDeclaration","scope":55773,"src":"5461:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55753,"name":"address","nodeType":"ElementaryTypeName","src":"5461:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5451:30:109"},"returnParameters":{"id":55758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55773,"src":"5503:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55756,"name":"uint256","nodeType":"ElementaryTypeName","src":"5503:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5502:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55797,"nodeType":"FunctionDefinition","src":"5680:240:109","nodes":[],"body":{"id":55796,"nodeType":"Block","src":"5841:79:109","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55786,"name":"epochStakesByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56598,"src":"5858:19:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":55788,"indexExpression":{"id":55787,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55775,"src":"5878:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5858:27:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":55790,"indexExpression":{"id":55789,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55777,"src":"5886:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5858:34:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":55792,"indexExpression":{"id":55791,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55779,"src":"5893:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5858:45:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55794,"indexExpression":{"id":55793,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55781,"src":"5904:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5858:55:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55785,"id":55795,"nodeType":"Return","src":"5851:62:109"}]},"baseFunctions":[56737],"functionSelector":"8d908258","implemented":true,"kind":"function","modifiers":[],"name":"getStakeAtEpoch","nameLocation":"5689:15:109","parameters":{"id":55782,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55775,"mutability":"mutable","name":"domain","nameLocation":"5722:6:109","nodeType":"VariableDeclaration","scope":55797,"src":"5714:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55774,"name":"address","nodeType":"ElementaryTypeName","src":"5714:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55777,"mutability":"mutable","name":"epoch","nameLocation":"5746:5:109","nodeType":"VariableDeclaration","scope":55797,"src":"5738:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55776,"name":"uint256","nodeType":"ElementaryTypeName","src":"5738:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55779,"mutability":"mutable","name":"custodian","nameLocation":"5769:9:109","nodeType":"VariableDeclaration","scope":55797,"src":"5761:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55778,"name":"address","nodeType":"ElementaryTypeName","src":"5761:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55781,"mutability":"mutable","name":"attester","nameLocation":"5796:8:109","nodeType":"VariableDeclaration","scope":55797,"src":"5788:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55780,"name":"address","nodeType":"ElementaryTypeName","src":"5788:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5704:106:109"},"returnParameters":{"id":55785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55784,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55797,"src":"5832:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55783,"name":"uint256","nodeType":"ElementaryTypeName","src":"5832:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5831:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55818,"nodeType":"FunctionDefinition","src":"5990:326:109","nodes":[],"body":{"id":55817,"nodeType":"Block","src":"6133:183:109","nodes":[],"statements":[{"expression":{"arguments":[{"id":55809,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55799,"src":"6195:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55811,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55799,"src":"6235:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55810,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"6219:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55812,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6219:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":55813,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55801,"src":"6260:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55814,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55803,"src":"6287:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":55808,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55797,"src":"6162:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":55815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6162:147:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55807,"id":55816,"nodeType":"Return","src":"6143:166:109"}]},"baseFunctions":[56748],"functionSelector":"70224360","implemented":true,"kind":"function","modifiers":[],"name":"getCurrentEpochStake","nameLocation":"5999:20:109","parameters":{"id":55804,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55799,"mutability":"mutable","name":"domain","nameLocation":"6037:6:109","nodeType":"VariableDeclaration","scope":55818,"src":"6029:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55798,"name":"address","nodeType":"ElementaryTypeName","src":"6029:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55801,"mutability":"mutable","name":"custodian","nameLocation":"6061:9:109","nodeType":"VariableDeclaration","scope":55818,"src":"6053:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55800,"name":"address","nodeType":"ElementaryTypeName","src":"6053:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55803,"mutability":"mutable","name":"attester","nameLocation":"6088:8:109","nodeType":"VariableDeclaration","scope":55818,"src":"6080:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55802,"name":"address","nodeType":"ElementaryTypeName","src":"6080:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6019:83:109"},"returnParameters":{"id":55807,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55806,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55818,"src":"6124:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55805,"name":"uint256","nodeType":"ElementaryTypeName","src":"6124:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6123:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55842,"nodeType":"FunctionDefinition","src":"6384:244:109","nodes":[],"body":{"id":55841,"nodeType":"Block","src":"6547:81:109","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55831,"name":"epochUnstakesByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56608,"src":"6564:21:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":55833,"indexExpression":{"id":55832,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55820,"src":"6586:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6564:29:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":55835,"indexExpression":{"id":55834,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55822,"src":"6594:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6564:36:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":55837,"indexExpression":{"id":55836,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55824,"src":"6601:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6564:47:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55839,"indexExpression":{"id":55838,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55826,"src":"6612:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6564:57:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55830,"id":55840,"nodeType":"Return","src":"6557:64:109"}]},"baseFunctions":[56761],"functionSelector":"879b938b","implemented":true,"kind":"function","modifiers":[],"name":"getUnstakeAtEpoch","nameLocation":"6393:17:109","parameters":{"id":55827,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55820,"mutability":"mutable","name":"domain","nameLocation":"6428:6:109","nodeType":"VariableDeclaration","scope":55842,"src":"6420:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55819,"name":"address","nodeType":"ElementaryTypeName","src":"6420:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55822,"mutability":"mutable","name":"epoch","nameLocation":"6452:5:109","nodeType":"VariableDeclaration","scope":55842,"src":"6444:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55821,"name":"uint256","nodeType":"ElementaryTypeName","src":"6444:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55824,"mutability":"mutable","name":"custodian","nameLocation":"6475:9:109","nodeType":"VariableDeclaration","scope":55842,"src":"6467:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55823,"name":"address","nodeType":"ElementaryTypeName","src":"6467:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55826,"mutability":"mutable","name":"attester","nameLocation":"6502:8:109","nodeType":"VariableDeclaration","scope":55842,"src":"6494:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55825,"name":"address","nodeType":"ElementaryTypeName","src":"6494:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6410:106:109"},"returnParameters":{"id":55830,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55829,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55842,"src":"6538:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55828,"name":"uint256","nodeType":"ElementaryTypeName","src":"6538:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6537:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55863,"nodeType":"FunctionDefinition","src":"6700:330:109","nodes":[],"body":{"id":55862,"nodeType":"Block","src":"6845:185:109","nodes":[],"statements":[{"expression":{"arguments":[{"id":55854,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55844,"src":"6909:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55856,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55844,"src":"6949:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55855,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"6933:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55857,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6933:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":55858,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55846,"src":"6974:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55859,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55848,"src":"7001:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":55853,"name":"getUnstakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55842,"src":"6874:17:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":55860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6874:149:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55852,"id":55861,"nodeType":"Return","src":"6855:168:109"}]},"baseFunctions":[56772],"functionSelector":"7667b76d","implemented":true,"kind":"function","modifiers":[],"name":"getCurrentEpochUnstake","nameLocation":"6709:22:109","parameters":{"id":55849,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55844,"mutability":"mutable","name":"domain","nameLocation":"6749:6:109","nodeType":"VariableDeclaration","scope":55863,"src":"6741:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55843,"name":"address","nodeType":"ElementaryTypeName","src":"6741:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55846,"mutability":"mutable","name":"custodian","nameLocation":"6773:9:109","nodeType":"VariableDeclaration","scope":55863,"src":"6765:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55845,"name":"address","nodeType":"ElementaryTypeName","src":"6765:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55848,"mutability":"mutable","name":"attester","nameLocation":"6800:8:109","nodeType":"VariableDeclaration","scope":55863,"src":"6792:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55847,"name":"address","nodeType":"ElementaryTypeName","src":"6792:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"6731:83:109"},"returnParameters":{"id":55852,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55851,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55863,"src":"6836:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55850,"name":"uint256","nodeType":"ElementaryTypeName","src":"6836:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6835:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55883,"nodeType":"FunctionDefinition","src":"7082:214:109","nodes":[],"body":{"id":55882,"nodeType":"Block","src":"7223:73:109","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":55874,"name":"epochTotalStakeByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56616,"src":"7240:23:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => uint256)))"}},"id":55876,"indexExpression":{"id":55875,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55865,"src":"7264:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7240:31:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":55878,"indexExpression":{"id":55877,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55867,"src":"7272:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7240:38:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":55880,"indexExpression":{"id":55879,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55869,"src":"7279:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7240:49:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55873,"id":55881,"nodeType":"Return","src":"7233:56:109"}]},"baseFunctions":[56783],"functionSelector":"5cdf3155","implemented":true,"kind":"function","modifiers":[],"name":"getTotalStakeForEpoch","nameLocation":"7091:21:109","parameters":{"id":55870,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55865,"mutability":"mutable","name":"domain","nameLocation":"7130:6:109","nodeType":"VariableDeclaration","scope":55883,"src":"7122:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55864,"name":"address","nodeType":"ElementaryTypeName","src":"7122:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55867,"mutability":"mutable","name":"epoch","nameLocation":"7154:5:109","nodeType":"VariableDeclaration","scope":55883,"src":"7146:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55866,"name":"uint256","nodeType":"ElementaryTypeName","src":"7146:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":55869,"mutability":"mutable","name":"custodian","nameLocation":"7177:9:109","nodeType":"VariableDeclaration","scope":55883,"src":"7169:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55868,"name":"address","nodeType":"ElementaryTypeName","src":"7169:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7112:80:109"},"returnParameters":{"id":55873,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55872,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55883,"src":"7214:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55871,"name":"uint256","nodeType":"ElementaryTypeName","src":"7214:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7213:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55901,"nodeType":"FunctionDefinition","src":"7352:226:109","nodes":[],"body":{"id":55900,"nodeType":"Block","src":"7477:101:109","nodes":[],"statements":[{"expression":{"arguments":[{"id":55893,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55885,"src":"7528:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55895,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55885,"src":"7552:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55894,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"7536:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55896,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7536:23:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":55897,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55887,"src":"7561:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":55892,"name":"getTotalStakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55883,"src":"7506:21:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) view returns (uint256)"}},"id":55898,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7506:65:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":55891,"id":55899,"nodeType":"Return","src":"7487:84:109"}]},"baseFunctions":[56792],"functionSelector":"44198e4d","implemented":true,"kind":"function","modifiers":[],"name":"getTotalStakeForCurrentEpoch","nameLocation":"7361:28:109","parameters":{"id":55888,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55885,"mutability":"mutable","name":"domain","nameLocation":"7407:6:109","nodeType":"VariableDeclaration","scope":55901,"src":"7399:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55884,"name":"address","nodeType":"ElementaryTypeName","src":"7399:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55887,"mutability":"mutable","name":"custodian","nameLocation":"7431:9:109","nodeType":"VariableDeclaration","scope":55901,"src":"7423:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55886,"name":"address","nodeType":"ElementaryTypeName","src":"7423:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"7389:57:109"},"returnParameters":{"id":55891,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55890,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":55901,"src":"7468:7:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55889,"name":"uint256","nodeType":"ElementaryTypeName","src":"7468:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7467:9:109"},"scope":56550,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":55990,"nodeType":"FunctionDefinition","src":"7617:1674:109","nodes":[],"body":{"id":55989,"nodeType":"Block","src":"7759:1532:109","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":55920,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7852:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7856:6:109","memberName":"sender","nodeType":"MemberAccess","src":"7852:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":55916,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"7822:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":55918,"indexExpression":{"id":55917,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55903,"src":"7840:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7822:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":55919,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"7848:3:109","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":46747,"src":"7822:29:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$46720_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":55922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7822:41:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55923,"nodeType":"ExpressionStatement","src":"7822:41:109"},{"assignments":[55925],"declarations":[{"constant":false,"id":55925,"mutability":"mutable","name":"balanceBefore","nameLocation":"8235:13:109","nodeType":"VariableDeclaration","scope":55989,"src":"8227:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55924,"name":"uint256","nodeType":"ElementaryTypeName","src":"8227:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":55933,"initialValue":{"arguments":[{"arguments":[{"id":55930,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8275:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}],"id":55929,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8267:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55928,"name":"address","nodeType":"ElementaryTypeName","src":"8267:7:109","typeDescriptions":{}}},"id":55931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8267:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":55926,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"8251:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"id":55927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8257:9:109","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43620,"src":"8251:15:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":55932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8251:30:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8227:54:109"},{"expression":{"arguments":[{"expression":{"id":55937,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8585:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8589:6:109","memberName":"sender","nodeType":"MemberAccess","src":"8585:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55941,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8605:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}],"id":55940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8597:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55939,"name":"address","nodeType":"ElementaryTypeName","src":"8597:7:109","typeDescriptions":{}}},"id":55942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8597:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55943,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55908,"src":"8612:6:109","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":55934,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55906,"src":"8562:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"id":55936,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8572:12:109","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43662,"src":"8562:22:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":55944,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8562:57:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55945,"nodeType":"ExpressionStatement","src":"8562:57:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":55950,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8742:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}],"id":55949,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8734:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55948,"name":"address","nodeType":"ElementaryTypeName","src":"8734:7:109","typeDescriptions":{}}},"id":55951,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8734:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":55946,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"8718:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"id":55947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8724:9:109","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43620,"src":"8718:15:109","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":55952,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8718:30:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":55955,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":55953,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55925,"src":"8752:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":55954,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55908,"src":"8768:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8752:22:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8718:56:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":55960,"nodeType":"IfStatement","src":"8714:114:109","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":55957,"name":"CustodianTransferAmountMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56901,"src":"8795:31:109","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":55958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8795:33:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":55959,"nodeType":"RevertStatement","src":"8788:40:109"}},{"expression":{"arguments":[{"id":55962,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55903,"src":"8918:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55964,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55903,"src":"8962:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55963,"name":"getNextEpochByBlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55773,"src":"8938:23:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55965,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8938:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":55968,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55906,"src":"8991:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}],"id":55967,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8983:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55966,"name":"address","nodeType":"ElementaryTypeName","src":"8983:7:109","typeDescriptions":{}}},"id":55969,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8983:18:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55970,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9015:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9019:6:109","memberName":"sender","nodeType":"MemberAccess","src":"9015:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55972,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55908,"src":"9039:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55961,"name":"_addStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55590,"src":"8895:9:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":55973,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8895:160:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55974,"nodeType":"ExpressionStatement","src":"8895:160:109"},{"eventCall":{"arguments":[{"id":55976,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55903,"src":"9158:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":55978,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55903,"src":"9191:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":55977,"name":"getNextEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55752,"src":"9178:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":55979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9178:20:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":55982,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55906,"src":"9220:9:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}],"id":55981,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9212:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":55980,"name":"address","nodeType":"ElementaryTypeName","src":"9212:7:109","typeDescriptions":{}}},"id":55983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9212:18:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":55984,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9244:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":55985,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9248:6:109","memberName":"sender","nodeType":"MemberAccess","src":"9244:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":55986,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55908,"src":"9268:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":55975,"name":"AttesterStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56867,"src":"9130:14:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":55987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9130:154:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":55988,"nodeType":"EmitStatement","src":"9125:159:109"}]},"baseFunctions":[56802],"functionSelector":"bf6eac2f","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":55911,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56625,"src":"7730:14:109","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":55912,"kind":"modifierInvocation","modifierName":{"id":55910,"name":"onlyRole","nameLocations":["7721:8:109"],"nodeType":"IdentifierPath","referencedDeclaration":39080,"src":"7721:8:109"},"nodeType":"ModifierInvocation","src":"7721:24:109"},{"id":55914,"kind":"modifierInvocation","modifierName":{"id":55913,"name":"nonReentrant","nameLocations":["7746:12:109"],"nodeType":"IdentifierPath","referencedDeclaration":44376,"src":"7746:12:109"},"nodeType":"ModifierInvocation","src":"7746:12:109"}],"name":"stake","nameLocation":"7626:5:109","parameters":{"id":55909,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55903,"mutability":"mutable","name":"domain","nameLocation":"7649:6:109","nodeType":"VariableDeclaration","scope":55990,"src":"7641:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55902,"name":"address","nodeType":"ElementaryTypeName","src":"7641:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55906,"mutability":"mutable","name":"custodian","nameLocation":"7672:9:109","nodeType":"VariableDeclaration","scope":55990,"src":"7665:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"},"typeName":{"id":55905,"nodeType":"UserDefinedTypeName","pathNode":{"id":55904,"name":"IERC20","nameLocations":["7665:6:109"],"nodeType":"IdentifierPath","referencedDeclaration":43663,"src":"7665:6:109"},"referencedDeclaration":43663,"src":"7665:6:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":55908,"mutability":"mutable","name":"amount","nameLocation":"7699:6:109","nodeType":"VariableDeclaration","scope":55990,"src":"7691:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55907,"name":"uint256","nodeType":"ElementaryTypeName","src":"7691:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7631:80:109"},"returnParameters":{"id":55915,"nodeType":"ParameterList","parameters":[],"src":"7759:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":56027,"nodeType":"FunctionDefinition","src":"9342:799:109","nodes":[],"body":{"id":56026,"nodeType":"Block","src":"9487:654:109","nodes":[],"statements":[{"expression":{"arguments":[{"id":56005,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55992,"src":"9843:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":56007,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55992,"src":"9887:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56006,"name":"getNextEpochByBlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55773,"src":"9863:23:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":56008,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9863:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56009,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55994,"src":"9908:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56010,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9931:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56011,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9935:6:109","memberName":"sender","nodeType":"MemberAccess","src":"9931:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56012,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55996,"src":"9955:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56004,"name":"_addUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55652,"src":"9818:11:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":56013,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9818:153:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56014,"nodeType":"ExpressionStatement","src":"9818:153:109"},{"eventCall":{"arguments":[{"id":56016,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55992,"src":"10017:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":56018,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55992,"src":"10050:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56017,"name":"getNextEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55752,"src":"10037:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":56019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10037:20:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56020,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55994,"src":"10071:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":56021,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10094:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56022,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10098:6:109","memberName":"sender","nodeType":"MemberAccess","src":"10094:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56023,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55996,"src":"10118:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56015,"name":"AttesterUnstaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56879,"src":"9987:16:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":56024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9987:147:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56025,"nodeType":"EmitStatement","src":"9982:152:109"}]},"baseFunctions":[56811],"functionSelector":"60829f8a","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":55999,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56625,"src":"9458:14:109","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":56000,"kind":"modifierInvocation","modifierName":{"id":55998,"name":"onlyRole","nameLocations":["9449:8:109"],"nodeType":"IdentifierPath","referencedDeclaration":39080,"src":"9449:8:109"},"nodeType":"ModifierInvocation","src":"9449:24:109"},{"id":56002,"kind":"modifierInvocation","modifierName":{"id":56001,"name":"nonReentrant","nameLocations":["9474:12:109"],"nodeType":"IdentifierPath","referencedDeclaration":44376,"src":"9474:12:109"},"nodeType":"ModifierInvocation","src":"9474:12:109"}],"name":"unstake","nameLocation":"9351:7:109","parameters":{"id":55997,"nodeType":"ParameterList","parameters":[{"constant":false,"id":55992,"mutability":"mutable","name":"domain","nameLocation":"9376:6:109","nodeType":"VariableDeclaration","scope":56027,"src":"9368:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55991,"name":"address","nodeType":"ElementaryTypeName","src":"9368:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55994,"mutability":"mutable","name":"custodian","nameLocation":"9400:9:109","nodeType":"VariableDeclaration","scope":56027,"src":"9392:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":55993,"name":"address","nodeType":"ElementaryTypeName","src":"9392:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":55996,"mutability":"mutable","name":"amount","nameLocation":"9427:6:109","nodeType":"VariableDeclaration","scope":56027,"src":"9419:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":55995,"name":"uint256","nodeType":"ElementaryTypeName","src":"9419:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9358:81:109"},"returnParameters":{"id":56003,"nodeType":"ParameterList","parameters":[],"src":"9487:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":56102,"nodeType":"FunctionDefinition","src":"10208:1340:109","nodes":[],"body":{"id":56101,"nodeType":"Block","src":"10356:1192:109","nodes":[],"statements":[{"assignments":[56039],"declarations":[{"constant":false,"id":56039,"mutability":"mutable","name":"stakeAmount","nameLocation":"10461:11:109","nodeType":"VariableDeclaration","scope":56101,"src":"10453:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56038,"name":"uint256","nodeType":"ElementaryTypeName","src":"10453:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56046,"initialValue":{"arguments":[{"id":56041,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56029,"src":"10504:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56042,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56031,"src":"10524:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56043,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56033,"src":"10549:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56044,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56035,"src":"10572:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56040,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55797,"src":"10475:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":56045,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10475:115:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10453:137:109"},{"assignments":[56048],"declarations":[{"constant":false,"id":56048,"mutability":"mutable","name":"unstakeAmount","nameLocation":"10608:13:109","nodeType":"VariableDeclaration","scope":56101,"src":"10600:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56047,"name":"uint256","nodeType":"ElementaryTypeName","src":"10600:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56057,"initialValue":{"arguments":[{"id":56050,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56029,"src":"10655:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56053,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56051,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56031,"src":"10675:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":56052,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10689:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10675:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56054,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56033,"src":"10704:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56055,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56035,"src":"10727:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56049,"name":"getUnstakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55842,"src":"10624:17:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":56056,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10624:121:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10600:145:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56060,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56058,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56048,"src":"10759:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":56059,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56039,"src":"10775:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10759:27:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56066,"nodeType":"IfStatement","src":"10755:85:109","trueBody":{"id":56065,"nodeType":"Block","src":"10788:52:109","statements":[{"expression":{"id":56063,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":56061,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56048,"src":"10802:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":56062,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56039,"src":"10818:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10802:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56064,"nodeType":"ExpressionStatement","src":"10802:27:109"}]}},{"assignments":[56068],"declarations":[{"constant":false,"id":56068,"mutability":"mutable","name":"remainder","nameLocation":"10857:9:109","nodeType":"VariableDeclaration","scope":56101,"src":"10849:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56067,"name":"uint256","nodeType":"ElementaryTypeName","src":"10849:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56072,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56069,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56039,"src":"10869:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":56070,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56048,"src":"10883:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10869:27:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10849:47:109"},{"expression":{"arguments":[{"id":56074,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56029,"src":"10917:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56075,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56031,"src":"10925:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":56076,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10939:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"10925:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56078,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56033,"src":"10942:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56079,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56035,"src":"10953:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56080,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56068,"src":"10963:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56073,"name":"_addStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55590,"src":"10907:9:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":56081,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10907:66:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56082,"nodeType":"ExpressionStatement","src":"10907:66:109"},{"expression":{"arguments":[{"arguments":[{"id":56086,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11328:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}],"id":56085,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11320:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56084,"name":"address","nodeType":"ElementaryTypeName","src":"11320:7:109","typeDescriptions":{}}},"id":56087,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11320:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56088,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56035,"src":"11335:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56089,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56033,"src":"11345:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56090,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56048,"src":"11356:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56083,"name":"_payAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56479,"src":"11307:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":56091,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11307:63:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56092,"nodeType":"ExpressionStatement","src":"11307:63:109"},{"eventCall":{"arguments":[{"id":56094,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56035,"src":"11423:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56095,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56031,"src":"11445:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56096,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56033,"src":"11470:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56097,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56039,"src":"11493:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56098,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56048,"src":"11518:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56093,"name":"AttesterEpochRolledOver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56891,"src":"11386:23:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256,uint256)"}},"id":56099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11386:155:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56100,"nodeType":"EmitStatement","src":"11381:160:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_rollOverAttester","nameLocation":"10217:17:109","parameters":{"id":56036,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56029,"mutability":"mutable","name":"domain","nameLocation":"10252:6:109","nodeType":"VariableDeclaration","scope":56102,"src":"10244:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56028,"name":"address","nodeType":"ElementaryTypeName","src":"10244:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56031,"mutability":"mutable","name":"epochNumber","nameLocation":"10276:11:109","nodeType":"VariableDeclaration","scope":56102,"src":"10268:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56030,"name":"uint256","nodeType":"ElementaryTypeName","src":"10268:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":56033,"mutability":"mutable","name":"custodian","nameLocation":"10305:9:109","nodeType":"VariableDeclaration","scope":56102,"src":"10297:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56032,"name":"address","nodeType":"ElementaryTypeName","src":"10297:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56035,"mutability":"mutable","name":"attester","nameLocation":"10332:8:109","nodeType":"VariableDeclaration","scope":56102,"src":"10324:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56034,"name":"address","nodeType":"ElementaryTypeName","src":"10324:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10234:112:109"},"returnParameters":{"id":56037,"nodeType":"ParameterList","parameters":[],"src":"10356:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56180,"nodeType":"FunctionDefinition","src":"11554:761:109","nodes":[],"body":{"id":56179,"nodeType":"Block","src":"11624:691:109","nodes":[],"statements":[{"body":{"id":56164,"nodeType":"Block","src":"11843:318:109","statements":[{"assignments":[56124],"declarations":[{"constant":false,"id":56124,"mutability":"mutable","name":"attester","nameLocation":"11865:8:109","nodeType":"VariableDeclaration","scope":56164,"src":"11857:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56123,"name":"address","nodeType":"ElementaryTypeName","src":"11857:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":56131,"initialValue":{"arguments":[{"id":56129,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56110,"src":"11905:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":56125,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"11876:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":56127,"indexExpression":{"id":56126,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"11894:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11876:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":56128,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11902:2:109","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":46843,"src":"11876:28:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":56130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11876:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"11857:50:109"},{"body":{"id":56162,"nodeType":"Block","src":"11988:163:109","statements":[{"assignments":[56147],"declarations":[{"constant":false,"id":56147,"mutability":"mutable","name":"custodian","nameLocation":"12014:9:109","nodeType":"VariableDeclaration","scope":56162,"src":"12006:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56146,"name":"address","nodeType":"ElementaryTypeName","src":"12006:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":56154,"initialValue":{"arguments":[{"id":56152,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56133,"src":"12056:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":56148,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"12026:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":56150,"indexExpression":{"id":56149,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"12045:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12026:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":56151,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12053:2:109","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":46843,"src":"12026:29:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":56153,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12026:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"12006:52:109"},{"expression":{"arguments":[{"id":56156,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"12095:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56157,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56106,"src":"12103:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56158,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56147,"src":"12116:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56159,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56124,"src":"12127:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56155,"name":"_rollOverAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56102,"src":"12077:17:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (address,uint256,address,address)"}},"id":56160,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12077:59:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56161,"nodeType":"ExpressionStatement","src":"12077:59:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56142,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56136,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56133,"src":"11942:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":56137,"name":"custodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56588,"src":"11946:18:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":56139,"indexExpression":{"id":56138,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"11965:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11946:26:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":56140,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11973:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"11946:33:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":56141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11946:35:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11942:39:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56163,"initializationExpression":{"assignments":[56133],"declarations":[{"constant":false,"id":56133,"mutability":"mutable","name":"j","nameLocation":"11935:1:109","nodeType":"VariableDeclaration","scope":56163,"src":"11927:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56132,"name":"uint256","nodeType":"ElementaryTypeName","src":"11927:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56135,"initialValue":{"hexValue":"30","id":56134,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11939:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11927:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11983:3:109","subExpression":{"id":56143,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56133,"src":"11983:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56145,"nodeType":"ExpressionStatement","src":"11983:3:109"},"nodeType":"ForStatement","src":"11922:229:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56113,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56110,"src":"11798:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":56114,"name":"attestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56583,"src":"11802:17:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$46720_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":56116,"indexExpression":{"id":56115,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"11820:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11802:25:109","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$46720_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":56117,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11828:6:109","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":46816,"src":"11802:32:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$46720_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$46720_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":56118,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11802:34:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11798:38:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56165,"initializationExpression":{"assignments":[56110],"declarations":[{"constant":false,"id":56110,"mutability":"mutable","name":"i","nameLocation":"11791:1:109","nodeType":"VariableDeclaration","scope":56165,"src":"11783:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56109,"name":"uint256","nodeType":"ElementaryTypeName","src":"11783:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56112,"initialValue":{"hexValue":"30","id":56111,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11795:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11783:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56121,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11838:3:109","subExpression":{"id":56120,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56110,"src":"11838:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56122,"nodeType":"ExpressionStatement","src":"11838:3:109"},"nodeType":"ForStatement","src":"11778:383:109"},{"expression":{"id":56172,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":56166,"name":"currentEpochByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56578,"src":"12210:20:109","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":56168,"indexExpression":{"id":56167,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"12231:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"12210:28:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56169,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56106,"src":"12241:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":56170,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12255:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"12241:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12210:46:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56173,"nodeType":"ExpressionStatement","src":"12210:46:109"},{"eventCall":{"arguments":[{"id":56175,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56104,"src":"12288:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56176,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56106,"src":"12296:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56174,"name":"EpochRolledOver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56897,"src":"12272:15:109","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12272:36:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56178,"nodeType":"EmitStatement","src":"12267:41:109"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_rollOverEpoch","nameLocation":"11563:14:109","parameters":{"id":56107,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56104,"mutability":"mutable","name":"domain","nameLocation":"11586:6:109","nodeType":"VariableDeclaration","scope":56180,"src":"11578:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56103,"name":"address","nodeType":"ElementaryTypeName","src":"11578:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56106,"mutability":"mutable","name":"epochNumber","nameLocation":"11602:11:109","nodeType":"VariableDeclaration","scope":56180,"src":"11594:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56105,"name":"uint256","nodeType":"ElementaryTypeName","src":"11594:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11577:37:109"},"returnParameters":{"id":56108,"nodeType":"ParameterList","parameters":[],"src":"11624:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56193,"nodeType":"FunctionDefinition","src":"12321:106:109","nodes":[],"body":{"id":56192,"nodeType":"Block","src":"12355:72:109","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":56184,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12380:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12384:6:109","memberName":"sender","nodeType":"MemberAccess","src":"12380:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":56187,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12408:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12412:6:109","memberName":"sender","nodeType":"MemberAccess","src":"12408:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56186,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"12392:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":56189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12392:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56183,"name":"_rollOverEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56180,"src":"12365:14:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":56190,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12365:55:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56191,"nodeType":"ExpressionStatement","src":"12365:55:109"}]},"baseFunctions":[56830],"functionSelector":"a887b71c","implemented":true,"kind":"function","modifiers":[],"name":"rollOverEpoch","nameLocation":"12330:13:109","parameters":{"id":56181,"nodeType":"ParameterList","parameters":[],"src":"12343:2:109"},"returnParameters":{"id":56182,"nodeType":"ParameterList","parameters":[],"src":"12355:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":56243,"nodeType":"FunctionDefinition","src":"12734:803:109","nodes":[],"body":{"id":56242,"nodeType":"Block","src":"12894:643:109","nodes":[],"statements":[{"assignments":[56208],"declarations":[{"constant":false,"id":56208,"mutability":"mutable","name":"targetEpoch","nameLocation":"12965:11:109","nodeType":"VariableDeclaration","scope":56242,"src":"12957:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56207,"name":"uint256","nodeType":"ElementaryTypeName","src":"12957:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56210,"initialValue":{"id":56209,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56198,"src":"12979:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12957:27:109"},{"assignments":[56212],"declarations":[{"constant":false,"id":56212,"mutability":"mutable","name":"stakeForEpoch","nameLocation":"13002:13:109","nodeType":"VariableDeclaration","scope":56242,"src":"12994:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56211,"name":"uint256","nodeType":"ElementaryTypeName","src":"12994:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56219,"initialValue":{"arguments":[{"id":56214,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56196,"src":"13047:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56215,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56208,"src":"13067:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56216,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56200,"src":"13092:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56217,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56202,"src":"13115:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56213,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55797,"src":"13018:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":56218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13018:115:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12994:139:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56220,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56212,"src":"13226:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":56221,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56204,"src":"13242:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13226:22:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":56240,"nodeType":"Block","src":"13444:87:109","statements":[{"expression":{"arguments":[{"id":56233,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56196,"src":"13471:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56234,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56208,"src":"13479:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56235,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56200,"src":"13492:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56236,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56202,"src":"13503:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56237,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56204,"src":"13513:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56232,"name":"_removeStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55626,"src":"13458:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":56238,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13458:62:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56239,"nodeType":"ExpressionStatement","src":"13458:62:109"}]},"id":56241,"nodeType":"IfStatement","src":"13222:309:109","trueBody":{"id":56231,"nodeType":"Block","src":"13250:188:109","statements":[{"expression":{"arguments":[{"id":56224,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56196,"src":"13294:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56225,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56208,"src":"13318:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56226,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56200,"src":"13347:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56227,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56202,"src":"13374:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56228,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56212,"src":"13400:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56223,"name":"_removeStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55626,"src":"13264:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":56229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13264:163:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56230,"nodeType":"ExpressionStatement","src":"13264:163:109"}]}}]},"documentation":{"id":56194,"nodeType":"StructuredDocumentation","src":"12433:296:109","text":" @dev Slash an attester's stake\n @param domain The domain of the attester\n @param epoch The epoch in which the slash is attempted\n @param custodian The custodian of the token\n @param attester The attester to slash\n @param amount The amount to slash"},"implemented":true,"kind":"function","modifiers":[],"name":"_slashStake","nameLocation":"12743:11:109","parameters":{"id":56205,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56196,"mutability":"mutable","name":"domain","nameLocation":"12772:6:109","nodeType":"VariableDeclaration","scope":56243,"src":"12764:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56195,"name":"address","nodeType":"ElementaryTypeName","src":"12764:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56198,"mutability":"mutable","name":"epoch","nameLocation":"12796:5:109","nodeType":"VariableDeclaration","scope":56243,"src":"12788:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56197,"name":"uint256","nodeType":"ElementaryTypeName","src":"12788:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":56200,"mutability":"mutable","name":"custodian","nameLocation":"12819:9:109","nodeType":"VariableDeclaration","scope":56243,"src":"12811:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56199,"name":"address","nodeType":"ElementaryTypeName","src":"12811:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56202,"mutability":"mutable","name":"attester","nameLocation":"12846:8:109","nodeType":"VariableDeclaration","scope":56243,"src":"12838:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56201,"name":"address","nodeType":"ElementaryTypeName","src":"12838:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56204,"mutability":"mutable","name":"amount","nameLocation":"12872:6:109","nodeType":"VariableDeclaration","scope":56243,"src":"12864:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56203,"name":"uint256","nodeType":"ElementaryTypeName","src":"12864:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12754:130:109"},"returnParameters":{"id":56206,"nodeType":"ParameterList","parameters":[],"src":"12894:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56293,"nodeType":"FunctionDefinition","src":"13869:902:109","nodes":[],"body":{"id":56292,"nodeType":"Block","src":"14007:764:109","nodes":[],"statements":[{"assignments":[56256],"declarations":[{"constant":false,"id":56256,"mutability":"mutable","name":"stakeForEpoch","nameLocation":"14084:13:109","nodeType":"VariableDeclaration","scope":56292,"src":"14076:21:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56255,"name":"uint256","nodeType":"ElementaryTypeName","src":"14076:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56263,"initialValue":{"arguments":[{"id":56258,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56246,"src":"14129:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56259,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56248,"src":"14149:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56260,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56250,"src":"14168:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56261,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56252,"src":"14191:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56257,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55797,"src":"14100:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":56262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14100:109:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14076:133:109"},{"assignments":[56265],"declarations":[{"constant":false,"id":56265,"mutability":"mutable","name":"targetEpoch","nameLocation":"14227:11:109","nodeType":"VariableDeclaration","scope":56292,"src":"14219:19:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56264,"name":"uint256","nodeType":"ElementaryTypeName","src":"14219:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56269,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56268,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56266,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56248,"src":"14241:5:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":56267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14249:1:109","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"14241:9:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14219:31:109"},{"assignments":[56271],"declarations":[{"constant":false,"id":56271,"mutability":"mutable","name":"unstakeForEpoch","nameLocation":"14268:15:109","nodeType":"VariableDeclaration","scope":56292,"src":"14260:23:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56270,"name":"uint256","nodeType":"ElementaryTypeName","src":"14260:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56278,"initialValue":{"arguments":[{"id":56273,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56246,"src":"14317:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56274,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56265,"src":"14337:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56275,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56250,"src":"14362:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56276,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56252,"src":"14385:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56272,"name":"getUnstakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55842,"src":"14286:17:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":56277,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14286:117:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"14260:143:109"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56281,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56279,"name":"unstakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56271,"src":"14418:15:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":56280,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56256,"src":"14436:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14418:31:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56291,"nodeType":"IfStatement","src":"14414:351:109","trueBody":{"id":56290,"nodeType":"Block","src":"14451:314:109","statements":[{"expression":{"arguments":[{"id":56283,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56246,"src":"14621:6:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56284,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56265,"src":"14645:11:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":56285,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56250,"src":"14674:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56286,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56252,"src":"14701:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56287,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56256,"src":"14727:13:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56282,"name":"_setUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55704,"src":"14592:11:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":56288,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14592:162:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56289,"nodeType":"ExpressionStatement","src":"14592:162:109"}]}}]},"documentation":{"id":56244,"nodeType":"StructuredDocumentation","src":"13543:321:109","text":" @dev Slash an attester's unstake\n @param domain The domain of the attester\n @param epoch The epoch in which the slash is attempted, i.e., epoch - 1 of the epoch where the unstake will be removed\n @param custodian The custodian of the token\n @param attester The attester to slash"},"implemented":true,"kind":"function","modifiers":[],"name":"_slashUnstake","nameLocation":"13878:13:109","parameters":{"id":56253,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56246,"mutability":"mutable","name":"domain","nameLocation":"13909:6:109","nodeType":"VariableDeclaration","scope":56293,"src":"13901:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56245,"name":"address","nodeType":"ElementaryTypeName","src":"13901:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56248,"mutability":"mutable","name":"epoch","nameLocation":"13933:5:109","nodeType":"VariableDeclaration","scope":56293,"src":"13925:13:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56247,"name":"uint256","nodeType":"ElementaryTypeName","src":"13925:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":56250,"mutability":"mutable","name":"custodian","nameLocation":"13956:9:109","nodeType":"VariableDeclaration","scope":56293,"src":"13948:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56249,"name":"address","nodeType":"ElementaryTypeName","src":"13948:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56252,"mutability":"mutable","name":"attester","nameLocation":"13983:8:109","nodeType":"VariableDeclaration","scope":56293,"src":"13975:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56251,"name":"address","nodeType":"ElementaryTypeName","src":"13975:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"13891:106:109"},"returnParameters":{"id":56254,"nodeType":"ParameterList","parameters":[],"src":"14007:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56401,"nodeType":"FunctionDefinition","src":"14777:1577:109","nodes":[],"body":{"id":56400,"nodeType":"Block","src":"14973:1381:109","nodes":[],"statements":[{"body":{"id":56398,"nodeType":"Block","src":"15030:1318:109","statements":[{"assignments":[56322],"declarations":[{"constant":false,"id":56322,"mutability":"mutable","name":"refundAmount","nameLocation":"15279:12:109","nodeType":"VariableDeclaration","scope":56398,"src":"15271:20:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56321,"name":"uint256","nodeType":"ElementaryTypeName","src":"15271:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56350,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":56326,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15357:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15361:6:109","memberName":"sender","nodeType":"MemberAccess","src":"15357:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"baseExpression":{"id":56329,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56299,"src":"15405:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56331,"indexExpression":{"id":56330,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15415:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15405:12:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56328,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"15389:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":56332,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15389:29:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":56333,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"15440:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56335,"indexExpression":{"id":56334,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15451:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15440:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56336,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56299,"src":"15475:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56338,"indexExpression":{"id":56337,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15485:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15475:12:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56325,"name":"getStakeAtEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55797,"src":"15320:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":56339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15320:185:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":56342,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56302,"src":"15532:7:109","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":56344,"indexExpression":{"id":56343,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15540:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15532:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":56345,"name":"refundAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56305,"src":"15544:13:109","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":56347,"indexExpression":{"id":56346,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15558:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15544:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":56340,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46289,"src":"15523:4:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$46289_$","typeString":"type(library Math)"}},"id":56341,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15528:3:109","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":45440,"src":"15523:8:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":56348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15523:38:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":56323,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46289,"src":"15294:4:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$46289_$","typeString":"type(library Math)"}},"id":56324,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15299:3:109","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":45440,"src":"15294:8:109","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":56349,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15294:281:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15271:304:109"},{"expression":{"arguments":[{"arguments":[{"id":56354,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15627:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}],"id":56353,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15619:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56352,"name":"address","nodeType":"ElementaryTypeName","src":"15619:7:109","typeDescriptions":{}}},"id":56355,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15619:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56356,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56299,"src":"15728:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56358,"indexExpression":{"id":56357,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15738:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15728:12:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56359,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"15758:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56361,"indexExpression":{"id":56360,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15769:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15758:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56362,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56322,"src":"15789:12:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56351,"name":"_payAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56479,"src":"15589:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":56363,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15589:226:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56364,"nodeType":"ExpressionStatement","src":"15589:226:109"},{"expression":{"arguments":[{"expression":{"id":56366,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16003:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56367,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16007:6:109","memberName":"sender","nodeType":"MemberAccess","src":"16003:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":56369,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16047:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56370,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16051:6:109","memberName":"sender","nodeType":"MemberAccess","src":"16047:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56368,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"16031:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":56371,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16031:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":56372,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"16076:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56374,"indexExpression":{"id":56373,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"16087:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16076:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56375,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56299,"src":"16107:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56377,"indexExpression":{"id":56376,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"16117:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16107:12:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56378,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56302,"src":"16137:7:109","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":56380,"indexExpression":{"id":56379,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"16145:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16137:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56365,"name":"_slashStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56243,"src":"15974:11:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":56381,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15974:187:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56382,"nodeType":"ExpressionStatement","src":"15974:187:109"},{"expression":{"arguments":[{"expression":{"id":56384,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16207:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56385,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16211:6:109","memberName":"sender","nodeType":"MemberAccess","src":"16207:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":56387,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"16251:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56388,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16255:6:109","memberName":"sender","nodeType":"MemberAccess","src":"16251:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56386,"name":"getCurrentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":55731,"src":"16235:15:109","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":56389,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16235:27:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":56390,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56296,"src":"16280:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56392,"indexExpression":{"id":56391,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"16291:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16280:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56393,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56299,"src":"16311:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56395,"indexExpression":{"id":56394,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"16321:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16311:12:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56383,"name":"_slashUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56293,"src":"16176:13:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (address,uint256,address,address)"}},"id":56396,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16176:161:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56397,"nodeType":"ExpressionStatement","src":"16176:161:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56317,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56314,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15003:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":56315,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56299,"src":"15007:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56316,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15017:6:109","memberName":"length","nodeType":"MemberAccess","src":"15007:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15003:20:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56399,"initializationExpression":{"assignments":[56311],"declarations":[{"constant":false,"id":56311,"mutability":"mutable","name":"i","nameLocation":"14996:1:109","nodeType":"VariableDeclaration","scope":56399,"src":"14988:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56310,"name":"uint256","nodeType":"ElementaryTypeName","src":"14988:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56313,"initialValue":{"hexValue":"30","id":56312,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15000:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14988:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56319,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15025:3:109","subExpression":{"id":56318,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56311,"src":"15025:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56320,"nodeType":"ExpressionStatement","src":"15025:3:109"},"nodeType":"ForStatement","src":"14983:1365:109"}]},"baseFunctions":[56845],"functionSelector":"a885c975","implemented":true,"kind":"function","modifiers":[{"id":56308,"kind":"modifierInvocation","modifierName":{"id":56307,"name":"nonReentrant","nameLocations":["14960:12:109"],"nodeType":"IdentifierPath","referencedDeclaration":44376,"src":"14960:12:109"},"nodeType":"ModifierInvocation","src":"14960:12:109"}],"name":"slash","nameLocation":"14786:5:109","parameters":{"id":56306,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56296,"mutability":"mutable","name":"custodians","nameLocation":"14820:10:109","nodeType":"VariableDeclaration","scope":56401,"src":"14801:29:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":56294,"name":"address","nodeType":"ElementaryTypeName","src":"14801:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":56295,"nodeType":"ArrayTypeName","src":"14801:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":56299,"mutability":"mutable","name":"attesters","nameLocation":"14859:9:109","nodeType":"VariableDeclaration","scope":56401,"src":"14840:28:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":56297,"name":"address","nodeType":"ElementaryTypeName","src":"14840:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":56298,"nodeType":"ArrayTypeName","src":"14840:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":56302,"mutability":"mutable","name":"amounts","nameLocation":"14897:7:109","nodeType":"VariableDeclaration","scope":56401,"src":"14878:26:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":56300,"name":"uint256","nodeType":"ElementaryTypeName","src":"14878:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56301,"nodeType":"ArrayTypeName","src":"14878:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":56305,"mutability":"mutable","name":"refundAmounts","nameLocation":"14933:13:109","nodeType":"VariableDeclaration","scope":56401,"src":"14914:32:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":56303,"name":"uint256","nodeType":"ElementaryTypeName","src":"14914:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56304,"nodeType":"ArrayTypeName","src":"14914:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"14791:161:109"},"returnParameters":{"id":56309,"nodeType":"ParameterList","parameters":[],"src":"14973:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56479,"nodeType":"FunctionDefinition","src":"16360:1535:109","nodes":[],"body":{"id":56478,"nodeType":"Block","src":"16496:1399:109","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56417,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56412,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56403,"src":"16510:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":56415,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"16526:4:109","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$56550","typeString":"contract MovementStaking"}],"id":56414,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16518:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56413,"name":"address","nodeType":"ElementaryTypeName","src":"16518:7:109","typeDescriptions":{}}},"id":56416,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16518:13:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16510:21:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":56476,"nodeType":"Block","src":"17071:818:109","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56455,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":56452,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"17453:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}],"id":56451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17445:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56450,"name":"address","nodeType":"ElementaryTypeName","src":"17445:7:109","typeDescriptions":{}}},"id":56453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17445:14:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":56454,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56407,"src":"17463:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"17445:27:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":56474,"nodeType":"Block","src":"17631:248:109","statements":[{"expression":{"arguments":[{"id":56469,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56403,"src":"17784:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56470,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56405,"src":"17810:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56471,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56409,"src":"17840:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":56466,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56407,"src":"17730:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56465,"name":"ICustodianToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57570,"src":"17714:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICustodianToken_$57570_$","typeString":"type(contract ICustodianToken)"}},"id":56467,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17714:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICustodianToken_$57570","typeString":"contract ICustodianToken"}},"id":56468,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17741:21:109","memberName":"buyCustodialTokenFrom","nodeType":"MemberAccess","referencedDeclaration":57569,"src":"17714:48:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":56472,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17714:150:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56473,"nodeType":"ExpressionStatement","src":"17714:150:109"}]},"id":56475,"nodeType":"IfStatement","src":"17441:438:109","trueBody":{"id":56464,"nodeType":"Block","src":"17474:151:109","statements":[{"expression":{"arguments":[{"id":56459,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56403,"src":"17560:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56460,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56405,"src":"17566:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56461,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56409,"src":"17576:6:109","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":56456,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"17541:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"id":56458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17547:12:109","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43662,"src":"17541:18:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":56462,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17541:42:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56463,"nodeType":"ExpressionStatement","src":"17541:42:109"}]}}]},"id":56477,"nodeType":"IfStatement","src":"16506:1383:109","trueBody":{"id":56449,"nodeType":"Block","src":"16533:532:109","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":56423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":56420,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"16611:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}],"id":56419,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16603:7:109","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":56418,"name":"address","nodeType":"ElementaryTypeName","src":"16603:7:109","typeDescriptions":{}}},"id":56421,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16603:14:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":56422,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56407,"src":"16621:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"16603:27:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":56447,"nodeType":"Block","src":"16779:276:109","statements":[{"expression":{"arguments":[{"id":56435,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56407,"src":"16876:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56436,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56409,"src":"16887:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":56432,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"16862:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"id":56434,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16868:7:109","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":43650,"src":"16862:13:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":56437,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16862:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56438,"nodeType":"ExpressionStatement","src":"16862:32:109"},{"expression":{"arguments":[{"id":56443,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56405,"src":"17023:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56444,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56409,"src":"17033:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":56440,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56407,"src":"16994:9:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":56439,"name":"ICustodianToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":57570,"src":"16978:15:109","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICustodianToken_$57570_$","typeString":"type(contract ICustodianToken)"}},"id":56441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16978:26:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICustodianToken_$57570","typeString":"contract ICustodianToken"}},"id":56442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17005:17:109","memberName":"buyCustodialToken","nodeType":"MemberAccess","referencedDeclaration":57560,"src":"16978:44:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":56445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16978:62:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56446,"nodeType":"ExpressionStatement","src":"16978:62:109"}]},"id":56448,"nodeType":"IfStatement","src":"16599:456:109","trueBody":{"id":56431,"nodeType":"Block","src":"16632:141:109","statements":[{"expression":{"arguments":[{"id":56427,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56405,"src":"16714:8:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":56428,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56409,"src":"16724:6:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":56424,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56570,"src":"16699:5:109","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43663","typeString":"contract IERC20"}},"id":56426,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"16705:8:109","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43630,"src":"16699:14:109","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":56429,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16699:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56430,"nodeType":"ExpressionStatement","src":"16699:32:109"}]}}]}}]},"implemented":true,"kind":"function","modifiers":[],"name":"_payAttester","nameLocation":"16369:12:109","parameters":{"id":56410,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56403,"mutability":"mutable","name":"from","nameLocation":"16399:4:109","nodeType":"VariableDeclaration","scope":56479,"src":"16391:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56402,"name":"address","nodeType":"ElementaryTypeName","src":"16391:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56405,"mutability":"mutable","name":"attester","nameLocation":"16421:8:109","nodeType":"VariableDeclaration","scope":56479,"src":"16413:16:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56404,"name":"address","nodeType":"ElementaryTypeName","src":"16413:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56407,"mutability":"mutable","name":"custodian","nameLocation":"16447:9:109","nodeType":"VariableDeclaration","scope":56479,"src":"16439:17:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56406,"name":"address","nodeType":"ElementaryTypeName","src":"16439:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":56409,"mutability":"mutable","name":"amount","nameLocation":"16474:6:109","nodeType":"VariableDeclaration","scope":56479,"src":"16466:14:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56408,"name":"uint256","nodeType":"ElementaryTypeName","src":"16466:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16381:105:109"},"returnParameters":{"id":56411,"nodeType":"ParameterList","parameters":[],"src":"16496:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":56521,"nodeType":"FunctionDefinition","src":"17901:464:109","nodes":[],"body":{"id":56520,"nodeType":"Block","src":"18056:309:109","nodes":[],"statements":[{"body":{"id":56518,"nodeType":"Block","src":"18237:122:109","statements":[{"expression":{"arguments":[{"expression":{"id":56505,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18296:3:109","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":56506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18300:6:109","memberName":"sender","nodeType":"MemberAccess","src":"18296:10:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56507,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56482,"src":"18308:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56509,"indexExpression":{"id":56508,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56494,"src":"18318:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18308:12:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56510,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56488,"src":"18322:10:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56512,"indexExpression":{"id":56511,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56494,"src":"18333:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18322:13:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":56513,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56485,"src":"18337:7:109","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":56515,"indexExpression":{"id":56514,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56494,"src":"18345:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18337:10:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":56504,"name":"_payAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56479,"src":"18283:12:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":56516,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18283:65:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56517,"nodeType":"ExpressionStatement","src":"18283:65:109"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":56500,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":56497,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56494,"src":"18210:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":56498,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56482,"src":"18214:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":56499,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18224:6:109","memberName":"length","nodeType":"MemberAccess","src":"18214:16:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18210:20:109","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":56519,"initializationExpression":{"assignments":[56494],"declarations":[{"constant":false,"id":56494,"mutability":"mutable","name":"i","nameLocation":"18203:1:109","nodeType":"VariableDeclaration","scope":56519,"src":"18195:9:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":56493,"name":"uint256","nodeType":"ElementaryTypeName","src":"18195:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":56496,"initialValue":{"hexValue":"30","id":56495,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18207:1:109","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"18195:13:109"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":56502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"18232:3:109","subExpression":{"id":56501,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56494,"src":"18232:1:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56503,"nodeType":"ExpressionStatement","src":"18232:3:109"},"nodeType":"ForStatement","src":"18190:169:109"}]},"functionSelector":"da33ee7f","implemented":true,"kind":"function","modifiers":[{"id":56491,"kind":"modifierInvocation","modifierName":{"id":56490,"name":"nonReentrant","nameLocations":["18043:12:109"],"nodeType":"IdentifierPath","referencedDeclaration":44376,"src":"18043:12:109"},"nodeType":"ModifierInvocation","src":"18043:12:109"}],"name":"reward","nameLocation":"17910:6:109","parameters":{"id":56489,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56482,"mutability":"mutable","name":"attesters","nameLocation":"17945:9:109","nodeType":"VariableDeclaration","scope":56521,"src":"17926:28:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":56480,"name":"address","nodeType":"ElementaryTypeName","src":"17926:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":56481,"nodeType":"ArrayTypeName","src":"17926:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":56485,"mutability":"mutable","name":"amounts","nameLocation":"17983:7:109","nodeType":"VariableDeclaration","scope":56521,"src":"17964:26:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":56483,"name":"uint256","nodeType":"ElementaryTypeName","src":"17964:7:109","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":56484,"nodeType":"ArrayTypeName","src":"17964:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":56488,"mutability":"mutable","name":"custodians","nameLocation":"18019:10:109","nodeType":"VariableDeclaration","scope":56521,"src":"18000:29:109","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":56486,"name":"address","nodeType":"ElementaryTypeName","src":"18000:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":56487,"nodeType":"ArrayTypeName","src":"18000:9:109","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"17916:119:109"},"returnParameters":{"id":56492,"nodeType":"ParameterList","parameters":[],"src":"18056:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":56535,"nodeType":"FunctionDefinition","src":"18371:140:109","nodes":[],"body":{"id":56534,"nodeType":"Block","src":"18463:48:109","nodes":[],"statements":[{"expression":{"arguments":[{"id":56530,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56625,"src":"18483:14:109","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56531,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56523,"src":"18499:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56529,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39213,"src":"18473:9:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":56532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18473:31:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56533,"nodeType":"ExpressionStatement","src":"18473:31:109"}]},"baseFunctions":[56850],"functionSelector":"41566585","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":56526,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39051,"src":"18443:18:109","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":56527,"kind":"modifierInvocation","modifierName":{"id":56525,"name":"onlyRole","nameLocations":["18434:8:109"],"nodeType":"IdentifierPath","referencedDeclaration":39080,"src":"18434:8:109"},"nodeType":"ModifierInvocation","src":"18434:28:109"}],"name":"whitelistAddress","nameLocation":"18380:16:109","parameters":{"id":56524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56523,"mutability":"mutable","name":"addr","nameLocation":"18414:4:109","nodeType":"VariableDeclaration","scope":56535,"src":"18406:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56522,"name":"address","nodeType":"ElementaryTypeName","src":"18406:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18396:28:109"},"returnParameters":{"id":56528,"nodeType":"ParameterList","parameters":[],"src":"18463:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":56549,"nodeType":"FunctionDefinition","src":"18517:151:109","nodes":[],"body":{"id":56548,"nodeType":"Block","src":"18619:49:109","nodes":[],"statements":[{"expression":{"arguments":[{"id":56544,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56625,"src":"18640:14:109","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":56545,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":56537,"src":"18656:4:109","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":56543,"name":"revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39232,"src":"18629:10:109","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":56546,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18629:32:109","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":56547,"nodeType":"ExpressionStatement","src":"18629:32:109"}]},"baseFunctions":[56855],"functionSelector":"286dd3f5","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":56540,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39051,"src":"18599:18:109","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":56541,"kind":"modifierInvocation","modifierName":{"id":56539,"name":"onlyRole","nameLocations":["18590:8:109"],"nodeType":"IdentifierPath","referencedDeclaration":39080,"src":"18590:8:109"},"nodeType":"ModifierInvocation","src":"18590:28:109"}],"name":"removeAddressFromWhitelist","nameLocation":"18526:26:109","parameters":{"id":56538,"nodeType":"ParameterList","parameters":[{"constant":false,"id":56537,"mutability":"mutable","name":"addr","nameLocation":"18570:4:109","nodeType":"VariableDeclaration","scope":56549,"src":"18562:12:109","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":56536,"name":"address","nodeType":"ElementaryTypeName","src":"18562:7:109","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18552:28:109"},"returnParameters":{"id":56542,"nodeType":"ParameterList","parameters":[],"src":"18619:0:109"},"scope":56550,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":55276,"name":"MovementStakingStorage","nameLocations":["683:22:109"],"nodeType":"IdentifierPath","referencedDeclaration":56626,"src":"683:22:109"},"id":55277,"nodeType":"InheritanceSpecifier","src":"683:22:109"},{"baseName":{"id":55278,"name":"IMovementStaking","nameLocations":["711:16:109"],"nodeType":"IdentifierPath","referencedDeclaration":56904,"src":"711:16:109"},"id":55279,"nodeType":"InheritanceSpecifier","src":"711:16:109"},{"baseName":{"id":55280,"name":"BaseStaking","nameLocations":["733:11:109"],"nodeType":"IdentifierPath","referencedDeclaration":56681,"src":"733:11:109"},"id":55281,"nodeType":"InheritanceSpecifier","src":"733:11:109"},{"baseName":{"id":55282,"name":"ReentrancyGuard","nameLocations":["750:15:109"],"nodeType":"IdentifierPath","referencedDeclaration":44412,"src":"750:15:109"},"id":55283,"nodeType":"InheritanceSpecifier","src":"750:15:109"}],"canonicalName":"MovementStaking","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[56550,44412,56681,39821,42755,39385,41148,45235,41527,40653,39639,56904,56626],"name":"MovementStaking","nameLocation":"660:15:109","scope":56551,"usedErrors":[39402,39405,39666,39671,41454,41457,42965,42978,44073,44076,44357,56899,56901,56903],"usedEvents":[39410,41466,41475,41484,42944,56867,56879,56891,56897]}],"license":"UNLICENSED"},"id":109} \ No newline at end of file diff --git a/protocol/pcp/cli/client/Cargo.toml b/protocol/pcp/cli/client/Cargo.toml index 136d0f4c..2fabd166 100644 --- a/protocol/pcp/cli/client/Cargo.toml +++ b/protocol/pcp/cli/client/Cargo.toml @@ -8,18 +8,66 @@ homepage = { workspace = true } publish = { workspace = true } rust-version = { workspace = true } +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +# [[bin]] +# name = "test-postconfirmationssettlement-client" +# path = "src/bin/e2e/test_client_settlement.rs" + [dependencies] -tokio = { workspace = true } -serde = { workspace = true, features = ["derive"] } -clap = { workspace = true} -dotenv = { workspace = true } -anyhow = { workspace = true } +secure-signer-loader = { workspace = true } +secure-signer = { workspace = true } +secure-signer-eth = { workspace = true } +pcp-types = { workspace = true } +pcp-config = { workspace = true } pcp-protocol-client-core-util = { workspace = true } pcp-protocol-client-core-eth = { workspace = true } -pcp-types = { workspace = true } hex = { workspace = true } sha3 = "0.10.0" -secure-signer-loader = { workspace = true } + +alloy = { workspace = true, features = [ + "node-bindings", + "rpc-types-trace", + "json-rpc", + "rpc-client", + "signers", + "signer-yubihsm", + "pubsub", + "providers", +] } +alloy-contract = { workspace = true } +alloy-network = { workspace = true } +alloy-primitives = { workspace = true } +alloy-provider = { workspace = true, features = [] } +alloy-signer = { workspace = true } +alloy-sol-types = { workspace = true } +alloy-transport = { workspace = true } +alloy-transport-ws = { workspace = true } + +anyhow = { workspace = true } +async-stream = { workspace = true } +async-trait = { workspace = true } +serde_json = { workspace = true } +# movement-types = { workspace = true } +thiserror = { workspace = true } +tokio = { workspace = true } +tokio-stream = { workspace = true } +tracing = { workspace = true } +serde = { workspace = true } + +ffs-environment = { workspace = true } + +# dot-movement = { workspace = true } +alloy-rpc-types = { workspace = true } +futures = { workspace = true } +tracing-subscriber = { workspace = true } + +clap = { workspace = true } + +[features] +default = ["eth"] +e2e = ["eth"] +eth = [] +mock = [] [lints] workspace = true diff --git a/protocol/pcp/cli/client/abis/MOVEToken.json b/protocol/pcp/cli/client/abis/MOVEToken.json index 301937e6..adadf945 100644 --- a/protocol/pcp/cli/client/abis/MOVEToken.json +++ b/protocol/pcp/cli/client/abis/MOVEToken.json @@ -1 +1,5 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"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":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_custody","type":"address","internalType":"address"}],"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":"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":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"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":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"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":"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":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6118b5806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;447:39;;;;;;;;;-1:-1:-1;462:22:115;:20;:22::i;:::-;299:1259;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:140;;;8087:29:20;;146:2:140;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:140:-;299:1259:115;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;2716:144:22;;;:::i;:::-;;;;;;;:::i;5210:186::-;;;;;;:::i;:::-;;:::i;3896:152::-;4027:14;;3896:152;;;1756:25:140;;;1744:2;1729:18;3896:152:22;1610:177:140;5988:244:22;;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;:::i;:::-;;:::i;5246:136::-;;;;;;:::i;:::-;;:::i;:::-;;1474:82:115;;;1548:1;3031:36:140;;3019:2;3004:18;1474:82:115;2889:184:140;3085:112:23;;;:::i;6348:245:19:-;;;;;;:::i;:::-;;:::i;981:342:115:-;;;;;;:::i;:::-;;:::i;4106:171:22:-;;;;;;:::i;:::-;;:::i;2824:154:23:-;;;;;;:::i;:::-;;:::i;5173:903:26:-;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:19:-;;;;;;:::i;:::-;;:::i;2973:148:22:-;;;:::i;2317:49:19:-;;2362:4;2317:49;;4472:178:22;;;;;;:::i;:::-;;:::i;2098:672:23:-;;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;:::i;:::-;;:::i;4708:195:22:-;;;;;;:::i;:::-;;:::i;3443:202:19:-;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;2716:144:22:-;2761:13;2786:22;-1:-1:-1;;;;;;;;;;;2811:18:22;2786:43;;2846:1;:7;;2839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:24;5337:31:22;966:10:24;5353:7:22;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:22;;5210:186;-1:-1:-1;;;5210:186:22:o;5988:244::-;6075:4;966:10:24;6131:37:22;6147:4;966:10:24;6162:5:22;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:22;;5988:244;-1:-1:-1;;;;5988:244:22:o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;3085:112:23:-;3144:7;3170:20;:18;:20::i;:::-;3163:27;;3085:112;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;981:342:115:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;-1:-1:-1;;;;;1072:20:115;::::1;::::0;;::::1;::::0;:46:::1;;-1:-1:-1::0;;;;;;1096:22:115;::::1;::::0;::::1;1072:46;1064:55;;;::::0;::::1;;1129:32;;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;:12:::1;:32::i;:::-;1171:40;;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;:23:::1;:40::i;:::-;1221:38;2362:4:19;1252:6:115::0;1221:10:::1;:38::i;:::-;-1:-1:-1::0;1269:47:115::1;1275:8:::0;1299:16:::1;1548:1:::0;1299:2:::1;:16;:::i;:::-;1285:30;::::0;:11:::1;:30;:::i;:::-;1269:5;:47::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;7960:50:140;;5142:14:20;;7948:2:140;7933:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;981:342:115;;:::o;4106:171:22:-;4171:7;;-1:-1:-1;;;;;;;;;;;4215:18:22;-1:-1:-1;;;;;4250:20:22;;;:11;:20;;;;;;;;-1:-1:-1;;4250:20:22;;;;;4106:171::o;2824:154:23:-;2926:7;2952:19;2965:5;2952:12;:19::i;5173:903:26:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:26;;5511:45;;-1:-1:-1;5777:18:26;:43;;;;-1:-1:-1;5799:16:26;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:26;;8223:2:140;5769:77:26;;;8205:21:140;8262:2;8242:18;;;8235:30;-1:-1:-1;;;8281:18:140;;;8274:51;8342:18;;5769:77:26;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:26;;;-1:-1:-1;5857:212:26;;-1:-1:-1;5965:13:26;;-1:-1:-1;6000:4:26;;-1:-1:-1;6027:1:26;-1:-1:-1;6043:16:26;-1:-1:-1;5857:212:26;-1:-1:-1;;5173:903:26:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;2973:148:22:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:22;3098:16;;;:::i;4472:178::-;4541:4;966:10:24;4595:27:22;966:10:24;4612:2:22;4616:5;4595:9;:27::i;2098:672:23:-;2319:8;2301:15;:26;2297:97;;;2350:33;;-1:-1:-1;;;2350:33:23;;;;;1756:25:140;;;1729:18;;2350:33:23;1610:177:140;2297:97:23;2404:18;1279:95;2463:5;2470:7;2479:5;2486:16;2496:5;-1:-1:-1;;;;;1954:16:25;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2486:16:23;2435:78;;;;;;8790:25:140;;;;-1:-1:-1;;;;;8851:32:140;;;8831:18;;;8824:60;8920:32;;;;8900:18;;;8893:60;8969:18;;;8962:34;9012:19;;;9005:35;9056:19;;;9049:35;;;8762:19;;2435:78:23;;;;;;;;;;;;2425:89;;;;;;2404:110;;2525:12;2540:28;2557:10;2540:16;:28::i;:::-;2525:43;;2579:14;2596:28;2610:4;2616:1;2619;2622;2596:13;:28::i;:::-;2579:45;;2648:5;-1:-1:-1;;;;;2638:15:23;:6;-1:-1:-1;;;;;2638:15:23;;2634:88;;2676:35;;-1:-1:-1;;;2676:35:23;;-1:-1:-1;;;;;9287:32:140;;;2676:35:23;;;9269:51:140;9356:32;;9336:18;;;9329:60;9242:18;;2676:35:23;9095:300:140;2634:88:23;2732:31;2741:5;2748:7;2757:5;2732:8;:31::i;:::-;2287:483;;;2098:672;;;;;;;:::o;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;4708:195:22:-:0;-1:-1:-1;;;;;4867:20:22;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;10001:128::-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11745:476::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:22;:36;11906:309;;;11985:5;11966:16;:24;11962:130;;;12017:60;;-1:-1:-1;;;12017:60:22;;-1:-1:-1;;;;;9620:32:140;;12017:60:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;12017:60:22;9400:345:140;11962:130:22;12133:57;12142:5;12149:7;12177:5;12158:16;:24;12184:5;12133:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:22;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:22;;6756:1;6729:30;;;9896:51:140;9869:18;;6729:30:22;9750:203:140;6684:86:22;-1:-1:-1;;;;;6783:16:22;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:22;;6851:1;6822:32;;;9896:51:140;9869:18;;6822:32:22;9750:203:140;6779:86:22;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;4015:109:26;4068:7;4094:23;:21;:23::i;7892:388:19:-;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2282:147:22;6931:20:20;:18;:20::i;:::-;2384:38:22::1;2407:5;2414:7;2384:22;:38::i;:::-;2282:147:::0;;:::o;3599:330:26:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:26;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:26::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:26::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:26:o;8733:208:22:-;-1:-1:-1;;;;;8803:21:22;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:22;;8876:1;8847:32;;;9896:51:140;9869:18;;8847:32:22;9750:203:140;8799:91:22;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;1259:164:25:-;1319:7;;1005:21;1364:19;886:156;6300:155:26;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:26;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:26;2720:156;4946:176;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3501:4:61;3495:11;-1:-1:-1;;;3519:23:61;;3571:4;3562:14;;3555:39;;;;3623:4;3614:14;;3607:34;3679:4;3664:20;;;3326:374;6887:260:60;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:60;;6887:260;-1:-1:-1;;;;;;6887:260:60:o;10976:487:22:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:22;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:22;;11212:1;11183:32;;;9896:51:140;9869:18;;11183:32:22;9750:203:140;11137:89:22;-1:-1:-1;;;;;11239:21:22;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:22;;11311:1;11283:31;;;9896:51:140;9869:18;;11283:31:22;9750:203:140;11235:90:22;-1:-1:-1;;;;;11334:20:22;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:22;11424:5;-1:-1:-1;;;;;11415:31:22;;11440:5;11415:31;;;;1756:25:140;;1744:2;1729:18;;1610:177;11415:31:22;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:22;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:22;;-1:-1:-1;7358:546:22;;-1:-1:-1;;;;;7574:17:22;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:22;;-1:-1:-1;;;;;9620:32:140;;7655:50:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;7655:50:22;9400:345:140;7605:115:22;-1:-1:-1;;;;;7840:17:22;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:22;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:22;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:22;8367:4;-1:-1:-1;;;;;8358:25:22;;8377:5;8358:25;;;;1756::140;;1744:2;1729:18;;1610:177;8358:25:22;;;;;;;;7295:1095;7220:1170;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;12404:32:140;;4514:47:19;;;12386:51:140;12453:18;;;12446:34;;;12359:18;;4514:47:19;12212:274:140;4130:191:26;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;12750:25:140;;;;12791:18;;12784:34;;;;12834:18;;;12827:34;4284:13:26;12877:18:140;;;12870:34;4307:4:26;12920:19:140;;;12913:61;12722:19;;4221:92:26;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;7146:73;7084:141::o;2435:216:22:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:22;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:22::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;5203:1551:60:-:0;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:60;;-1:-1:-1;6385:30:60;;-1:-1:-1;6417:1:60;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;13212:25:140;;;13285:4;13273:17;;13253:18;;;13246:45;;;;13307:18;;;13300:34;;;13350:18;;;13343:34;;;6541:24:60;;13184:19:140;;6541:24:60;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:60;;-1:-1:-1;;6541:24:60;;;-1:-1:-1;;;;;;;6579:20:60;;6575:113;;-1:-1:-1;6631:1:60;;-1:-1:-1;6635:29:60;;-1:-1:-1;6631:1:60;;-1:-1:-1;6615:62:60;;6575:113;6706:6;-1:-1:-1;6714:20:60;;-1:-1:-1;6714:20:60;;-1:-1:-1;5203:1551:60;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:60;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:60;;;;;1756:25:140;;;1729:18;;7634:46:60;1610:177:140;7563:243:60;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:60;;;;;1756:25:140;;;1729:18;;7763:32:60;1610:177:140;7058:687:26;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:26;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:26;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:26:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:26:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:26;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:26;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:26:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:26:o;14:286:140:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:140:o;497:400::-;539:3;577:5;571:12;604:6;599:3;592:19;629:1;639:139;653:6;650:1;647:13;639:139;;;761:4;746:13;;;742:24;;736:31;716:11;;;712:22;;705:63;668:12;639:139;;;643:3;823:1;816:4;807:6;802:3;798:16;794:27;787:38;886:4;879:2;875:7;870:2;862:6;858:15;854:29;849:3;845:39;841:50;834:57;;;497:400;;;;:::o;902:220::-;1051:2;1040:9;1033:21;1014:4;1071:45;1112:2;1101:9;1097:18;1089:6;1071:45;:::i;1127:173::-;1195:20;;-1:-1:-1;;;;;1244:31:140;;1234:42;;1224:70;;1290:1;1287;1280:12;1224:70;1127:173;;;:::o;1305:300::-;1373:6;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1473:29;1492:9;1473:29;:::i;:::-;1463:39;1571:2;1556:18;;;;1543:32;;-1:-1:-1;;;1305:300:140:o;1792:374::-;1869:6;1877;1885;1938:2;1926:9;1917:7;1913:23;1909:32;1906:52;;;1954:1;1951;1944:12;1906:52;1977:29;1996:9;1977:29;:::i;:::-;1967:39;;2025:38;2059:2;2048:9;2044:18;2025:38;:::i;:::-;1792:374;;2015:48;;-1:-1:-1;;;2132:2:140;2117:18;;;;2104:32;;1792:374::o;2171:226::-;2230:6;2283:2;2271:9;2262:7;2258:23;2254:32;2251:52;;;2299:1;2296;2289:12;2251:52;-1:-1:-1;2344:23:140;;2171:226;-1:-1:-1;2171:226:140:o;2584:300::-;2652:6;2660;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2774:23;;;-1:-1:-1;2840:38:140;2874:2;2859:18;;2840:38;:::i;:::-;2830:48;;2584:300;;;;;:::o;3078:260::-;3146:6;3154;3207:2;3195:9;3186:7;3182:23;3178:32;3175:52;;;3223:1;3220;3213:12;3175:52;3246:29;3265:9;3246:29;:::i;:::-;3236:39;;3294:38;3328:2;3317:9;3313:18;3294:38;:::i;3343:186::-;3402:6;3455:2;3443:9;3434:7;3430:23;3426:32;3423:52;;;3471:1;3468;3461:12;3423:52;3494:29;3513:9;3494:29;:::i;3534:1238::-;3940:3;3935;3931:13;3923:6;3919:26;3908:9;3901:45;3982:3;3977:2;3966:9;3962:18;3955:31;3882:4;4009:46;4050:3;4039:9;4035:19;4027:6;4009:46;:::i;:::-;4103:9;4095:6;4091:22;4086:2;4075:9;4071:18;4064:50;4137:33;4163:6;4155;4137:33;:::i;:::-;4201:2;4186:18;;4179:34;;;-1:-1:-1;;;;;4250:32:140;;4244:3;4229:19;;4222:61;4270:3;4299:19;;4292:35;;;4364:22;;;4358:3;4343:19;;4336:51;4436:13;;4458:22;;;4508:2;4534:15;;;;-1:-1:-1;4496:15:140;;;;-1:-1:-1;4577:169:140;4591:6;4588:1;4585:13;4577:169;;;4652:13;;4640:26;;4695:2;4721:15;;;;4686:12;;;;4613:1;4606:9;4577:169;;;-1:-1:-1;4763:3:140;;3534:1238;-1:-1:-1;;;;;;;;;;;3534:1238:140:o;4777:903::-;4888:6;4896;4904;4912;4920;4928;4936;4989:3;4977:9;4968:7;4964:23;4960:33;4957:53;;;5006:1;5003;4996:12;4957:53;5029:29;5048:9;5029:29;:::i;:::-;5019:39;;5077:38;5111:2;5100:9;5096:18;5077:38;:::i;:::-;5067:48;-1:-1:-1;5184:2:140;5169:18;;5156:32;;-1:-1:-1;5285:2:140;5270:18;;5257:32;;-1:-1:-1;5367:3:140;5352:19;;5339:33;5416:4;5403:18;;5391:31;;5381:59;;5436:1;5433;5426:12;5381:59;4777:903;;;;-1:-1:-1;4777:903:140;;;;5459:7;5539:3;5524:19;;5511:33;;-1:-1:-1;5643:3:140;5628:19;;;5615:33;;4777:903;-1:-1:-1;;4777:903:140:o;5685:380::-;5764:1;5760:12;;;;5807;;;5828:61;;5882:4;5874:6;5870:17;5860:27;;5828:61;5935:2;5927:6;5924:14;5904:18;5901:38;5898:161;;5981:10;5976:3;5972:20;5969:1;5962:31;6016:4;6013:1;6006:15;6044:4;6041:1;6034:15;5898:161;;5685:380;;;:::o;6070:127::-;6131:10;6126:3;6122:20;6119:1;6112:31;6162:4;6159:1;6152:15;6186:4;6183:1;6176:15;6202:375;6290:1;6308:5;6322:249;6343:1;6333:8;6330:15;6322:249;;;6393:4;6388:3;6384:14;6378:4;6375:24;6372:50;;;6402:18;;:::i;:::-;6452:1;6442:8;6438:16;6435:49;;;6466:16;;;;6435:49;6549:1;6545:16;;;;;6505:15;;6322:249;;;6202:375;;;;;;:::o;6582:902::-;6631:5;6661:8;6651:80;;-1:-1:-1;6702:1:140;6716:5;;6651:80;6750:4;6740:76;;-1:-1:-1;6787:1:140;6801:5;;6740:76;6832:4;6850:1;6845:59;;;;6918:1;6913:174;;;;6825:262;;6845:59;6875:1;6866:10;;6889:5;;;6913:174;6950:3;6940:8;6937:17;6934:43;;;6957:18;;:::i;:::-;-1:-1:-1;;7013:1:140;6999:16;;7072:5;;6825:262;;7171:2;7161:8;7158:16;7152:3;7146:4;7143:13;7139:36;7133:2;7123:8;7120:16;7115:2;7109:4;7106:12;7102:35;7099:77;7096:203;;;-1:-1:-1;7208:19:140;;;7284:5;;7096:203;7331:42;-1:-1:-1;;7356:8:140;7350:4;7331:42;:::i;:::-;7409:6;7405:1;7401:6;7397:19;7388:7;7385:32;7382:58;;;7420:18;;:::i;:::-;7458:20;;6582:902;-1:-1:-1;;;6582:902:140:o;7489:140::-;7547:5;7576:47;7617:4;7607:8;7603:19;7597:4;7576:47;:::i;7634:168::-;7707:9;;;7738;;7755:15;;;7749:22;;7735:37;7725:71;;7776:18;;:::i;8371:127::-;8432:10;8427:3;8423:20;8420:1;8413:31;8463:4;8460:1;8453:15;8487:4;8484:1;8477:15;10084:518;10186:2;10181:3;10178:11;10175:421;;;10222:5;10219:1;10212:16;10266:4;10263:1;10253:18;10336:2;10324:10;10320:19;10317:1;10313:27;10307:4;10303:38;10372:4;10360:10;10357:20;10354:47;;;-1:-1:-1;10395:4:140;10354:47;10450:2;10445:3;10441:12;10438:1;10434:20;10428:4;10424:31;10414:41;;10505:81;10523:2;10516:5;10513:13;10505:81;;;10582:1;10568:16;;10549:1;10538:13;10505:81;;10778:1299;10904:3;10898:10;10931:18;10923:6;10920:30;10917:56;;;10953:18;;:::i;:::-;10982:97;11072:6;11032:38;11064:4;11058:11;11032:38;:::i;:::-;11026:4;10982:97;:::i;:::-;11128:4;11159:2;11148:14;;11176:1;11171:649;;;;11864:1;11881:6;11878:89;;;-1:-1:-1;11933:19:140;;;11927:26;11878:89;-1:-1:-1;;10735:1:140;10731:11;;;10727:24;10723:29;10713:40;10759:1;10755:11;;;10710:57;11980:81;;11141:930;;11171:649;10031:1;10024:14;;;10068:4;10055:18;;-1:-1:-1;;11207:20:140;;;11325:222;11339:7;11336:1;11333:14;11325:222;;;11421:19;;;11415:26;11400:42;;11528:4;11513:20;;;;11481:1;11469:14;;;;11355:12;11325:222;;;11329:3;11575:6;11566:7;11563:19;11560:201;;;11636:19;;;11630:26;-1:-1:-1;;11719:1:140;11715:14;;;11731:3;11711:24;11707:37;11703:42;11688:58;11673:74;;11560:201;-1:-1:-1;;;;11807:1:140;11791:14;;;11787:22;11774:36;;-1:-1:-1;10778:1299:140:o;12082:125::-;12147:9;;;12168:10;;;12165:36;;;12181:18;;:::i;13388:127::-;13449:10;13444:3;13440:20;13437:1;13430:31;13480:4;13477:1;13470:15;13504:4;13501:1;13494:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address)":"485cc955","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":\"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\":[{\"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\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":[],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":[{\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"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.\"}],\"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.\"}]},\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Disables potential implementation exploit\"},\"decimals()\":{\"details\":\"Returns the number of decimals\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address)\":{\"details\":\"Initializes the contract with initial parameters.\",\"params\":{\"_custody\":\"The address of the custody account.\",\"_owner\":\"The address of the owner who receives default admin role.\"}},\"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.\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decimals()\":{\"notice\":\"decimals is set to 8, following the Movement network standard decimals\"},\"initialize(address,address)\":{\"notice\":\"The ERC20 token is named \\\"Movement\\\" with symbol \\\"MOVE\\\".EIP712 domain version is set to \\\"1\\\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/MOVEToken.sol\":\"MOVEToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"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\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251\",\"dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d\"]},\"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\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"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/token/MOVEToken.sol\":{\"keccak256\":\"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a\",\"dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"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":"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":[{"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","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":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","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":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[],"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":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_custody","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"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":[{"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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"}]}],"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"constructor":{"details":"Disables potential implementation exploit"},"decimals()":{"details":"Returns the number of decimals"},"eip712Domain()":{"details":"See {IERC-5267}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address)":{"details":"Initializes the contract with initial parameters.","params":{"_custody":"The address of the custody account.","_owner":"The address of the owner who receives default admin role."}},"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."},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."}},"version":1},"userdoc":{"kind":"user","methods":{"decimals()":{"notice":"decimals is set to 8, following the Movement network standard decimals"},"initialize(address,address)":{"notice":"The ERC20 token is named \"Movement\" with symbol \"MOVE\".EIP712 domain version is set to \"1\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address."}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/MOVEToken.sol":"MOVEToken"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"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":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"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/Strings.sol":{"keccak256":"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c","urls":["bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251","dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d"],"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":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/token/MOVEToken.sol":{"keccak256":"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22","urls":["bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a","dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H"],"license":"MIT"}},"version":1},"id":115} \ No newline at end of file +<<<<<<< HEAD +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"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":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_custody","type":"address","internalType":"address"}],"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":"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":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"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":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"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":"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":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x6080604052348015600e575f80fd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b61181b806100d65f395ff3fe608060405234801561000f575f80fd5b5060043610610132575f3560e01c8063485cc955116100b457806395d89b411161007957806395d89b4114610283578063a217fddf1461028b578063a9059cbb14610292578063d505accf146102a5578063d547741f146102b8578063dd62ed3e146102cb575f80fd5b8063485cc9551461021c57806370a082311461022f5780637ecebe001461024257806384b0196e1461025557806391d1485414610270575f80fd5b8063248a9ca3116100fa578063248a9ca3146101ca5780632f2ff15d146101dd578063313ce567146101f25780633644e5151461020157806336568abe14610209575f80fd5b806301ffc9a71461013657806306fdde031461015e578063095ea7b31461017357806318160ddd1461018657806323b872dd146101b7575b5f80fd5b610149610144366004611287565b6102de565b60405190151581526020015b60405180910390f35b610166610314565b60405161015591906112e3565b610149610181366004611310565b6103b9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610155565b6101496101c5366004611338565b6103d0565b6101a96101d8366004611372565b6103f3565b6101f06101eb366004611389565b610413565b005b60405160088152602001610155565b6101a9610435565b6101f0610217366004611389565b610443565b6101f061022a3660046113b3565b61047b565b6101a961023d3660046113db565b610661565b6101a96102503660046113db565b610691565b61025d61069b565b60405161015597969594939291906113f4565b61014961027e366004611389565b610749565b61016661077f565b6101a95f81565b6101496102a0366004611310565b6107bd565b6101f06102b336600461148a565b6107ca565b6101f06102c6366004611389565b61091f565b6101a96102d93660046113b3565b61093b565b5f6001600160e01b03198216637965db0b60e01b148061030e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f5f805160206117868339815191525b9050806003018054610337906114f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906114f7565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505091505090565b5f336103c6818585610984565b5060019392505050565b5f336103dd858285610991565b6103e88585856109ef565b506001949350505050565b5f9081525f805160206117c6833981519152602052604090206001015490565b61041c826103f3565b61042581610a4c565b61042f8383610a59565b50505050565b5f61043e610afa565b905090565b6001600160a01b038116331461046c5760405163334bd91960e11b815260040160405180910390fd5b6104768282610b03565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156104c05750825b90505f8267ffffffffffffffff1660011480156104dc5750303b155b9050811580156104ea575080155b156105085760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561053257845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061055257506001600160a01b03861615155b61055a575f80fd5b6105a060405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610b7c565b6105e360405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610b92565b6105ed5f88610a59565b50610612866105fe6008600a611626565b61060d906402540be400611634565b610bf1565b831561065857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f805f805160206117868339815191525b6001600160a01b039093165f9081526020939093525050604090205490565b5f61030e82610c25565b5f60608082808083815f805160206117a683398151915280549091501580156106c657506001810154155b61070f5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610717610c4d565b61071f610c8b565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f9182525f805160206117c6833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061178683398151915291610337906114f7565b5f336103c68185856109ef565b834211156107ee5760405163313c898160e11b815260048101859052602401610706565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108588c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6108b282610ca1565b90505f6108c182878787610ccd565b9050896001600160a01b0316816001600160a01b031614610908576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610706565b6109138a8a8a610984565b50505050505050505050565b610928826103f3565b61093181610a4c565b61042f8383610b03565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104768383836001610cf9565b5f61099c848461093b565b90505f1981101561042f57818110156109e157604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610706565b61042f84848484035f610cf9565b6001600160a01b038316610a1857604051634b637e8f60e11b81525f6004820152602401610706565b6001600160a01b038216610a415760405163ec442f0560e01b81525f6004820152602401610706565b610476838383610ddd565b610a568133610f16565b50565b5f5f805160206117c6833981519152610a728484610749565b610af1575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610aa73390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061030e565b5f91505061030e565b5f61043e610f4f565b5f5f805160206117c6833981519152610b1c8484610749565b15610af1575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061030e565b610b84610fc2565b610b8e828261100d565b5050565b610b9a610fc2565b5f805160206117a68339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610bd384826116a3565b5060038101610be283826116a3565b505f8082556001909101555050565b6001600160a01b038216610c1a5760405163ec442f0560e01b81525f6004820152602401610706565b610b8e5f8383610ddd565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610672565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f805160206117a683398151915291610337906114f7565b60605f5f805160206117a6833981519152610326565b5f61030e610cad610afa565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f80610cdd8888888861105d565b925092509250610ced8282611125565b50909695505050505050565b5f805160206117868339815191526001600160a01b038516610d305760405163e602df0560e01b81525f6004820152602401610706565b6001600160a01b038416610d5957604051634a1406b160e11b81525f6004820152602401610706565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610dd657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610dcd91815260200190565b60405180910390a35b5050505050565b5f805160206117868339815191526001600160a01b038416610e175781816002015f828254610e0c919061175e565b90915550610e879050565b6001600160a01b0384165f9081526020829052604090205482811015610e695760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610706565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610ea5576002810180548390039055610ec3565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0891815260200190565b60405180910390a350505050565b610f208282610749565b610b8e5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610706565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f796111dd565b610f81611245565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661100b57604051631afcd79f60e31b815260040160405180910390fd5b565b611015610fc2565b5f805160206117868339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361104e84826116a3565b506004810161042f83826116a3565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561109657505f9150600390508261111b565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156110e7573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661111257505f92506001915082905061111b565b92505f91508190505b9450945094915050565b5f82600381111561113857611138611771565b03611141575050565b600182600381111561115557611155611771565b036111735760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561118757611187611771565b036111a85760405163fce698f760e01b815260048101829052602401610706565b60038260038111156111bc576111bc611771565b03610b8e576040516335e2f38360e21b815260048101829052602401610706565b5f5f805160206117a6833981519152816111f5610c4d565b80519091501561120d57805160209091012092915050565b8154801561121c579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f805160206117a68339815191528161125d610c8b565b80519091501561127557805160209091012092915050565b6001820154801561121c579392505050565b5f60208284031215611297575f80fd5b81356001600160e01b0319811681146112ae575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112ae60208301846112b5565b80356001600160a01b038116811461130b575f80fd5b919050565b5f8060408385031215611321575f80fd5b61132a836112f5565b946020939093013593505050565b5f805f6060848603121561134a575f80fd5b611353846112f5565b9250611361602085016112f5565b929592945050506040919091013590565b5f60208284031215611382575f80fd5b5035919050565b5f806040838503121561139a575f80fd5b823591506113aa602084016112f5565b90509250929050565b5f80604083850312156113c4575f80fd5b6113cd836112f5565b91506113aa602084016112f5565b5f602082840312156113eb575f80fd5b6112ae826112f5565b60ff60f81b8816815260e060208201525f61141260e08301896112b5565b828103604084015261142481896112b5565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561147957835183526020938401939092019160010161145b565b50909b9a5050505050505050505050565b5f805f805f805f60e0888a0312156114a0575f80fd5b6114a9886112f5565b96506114b7602089016112f5565b95506040880135945060608801359350608088013560ff811681146114da575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061150b57607f821691505b60208210810361152957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561157e578085048111156115625761156261152f565b600184161561157057908102905b60019390931c928002611547565b935093915050565b5f826115945750600161030e565b816115a057505f61030e565b81600181146115b657600281146115c0576115dc565b600191505061030e565b60ff8411156115d1576115d161152f565b50506001821b61030e565b5060208310610133831016604e8410600b84101617156115ff575081810a61030e565b61160b5f198484611543565b805f190482111561161e5761161e61152f565b029392505050565b5f6112ae60ff841683611586565b808202811582820484141761030e5761030e61152f565b634e487b7160e01b5f52604160045260245ffd5b601f82111561047657805f5260205f20601f840160051c810160208510156116845750805b601f840160051c820191505b81811015610dd6575f8155600101611690565b815167ffffffffffffffff8111156116bd576116bd61164b565b6116d1816116cb84546114f7565b8461165f565b6020601f821160018114611703575f83156116ec5750848201515b5f19600385901b1c1916600184901b178455610dd6565b5f84815260208120601f198516915b828110156117325787850151825560209485019460019092019101611712565b508482101561174f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561030e5761030e61152f565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212203dd31e1ad88f47a21c7b07b3f4b62a4fb23cac54ad8408caf213d1eca21745b764736f6c634300081a0033","sourceMap":"299:1259:118:-:0;;;447:39;;;;;;;;;-1:-1:-1;462:22:118;:20;:22::i;:::-;299:1259;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:143;;;8087:29:20;;146:2:143;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:143:-;299:1259:118;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561000f575f80fd5b5060043610610132575f3560e01c8063485cc955116100b457806395d89b411161007957806395d89b4114610283578063a217fddf1461028b578063a9059cbb14610292578063d505accf146102a5578063d547741f146102b8578063dd62ed3e146102cb575f80fd5b8063485cc9551461021c57806370a082311461022f5780637ecebe001461024257806384b0196e1461025557806391d1485414610270575f80fd5b8063248a9ca3116100fa578063248a9ca3146101ca5780632f2ff15d146101dd578063313ce567146101f25780633644e5151461020157806336568abe14610209575f80fd5b806301ffc9a71461013657806306fdde031461015e578063095ea7b31461017357806318160ddd1461018657806323b872dd146101b7575b5f80fd5b610149610144366004611287565b6102de565b60405190151581526020015b60405180910390f35b610166610314565b60405161015591906112e3565b610149610181366004611310565b6103b9565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b604051908152602001610155565b6101496101c5366004611338565b6103d0565b6101a96101d8366004611372565b6103f3565b6101f06101eb366004611389565b610413565b005b60405160088152602001610155565b6101a9610435565b6101f0610217366004611389565b610443565b6101f061022a3660046113b3565b61047b565b6101a961023d3660046113db565b610661565b6101a96102503660046113db565b610691565b61025d61069b565b60405161015597969594939291906113f4565b61014961027e366004611389565b610749565b61016661077f565b6101a95f81565b6101496102a0366004611310565b6107bd565b6101f06102b336600461148a565b6107ca565b6101f06102c6366004611389565b61091f565b6101a96102d93660046113b3565b61093b565b5f6001600160e01b03198216637965db0b60e01b148061030e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60605f5f805160206117868339815191525b9050806003018054610337906114f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610363906114f7565b80156103ae5780601f10610385576101008083540402835291602001916103ae565b820191905f5260205f20905b81548152906001019060200180831161039157829003601f168201915b505050505091505090565b5f336103c6818585610984565b5060019392505050565b5f336103dd858285610991565b6103e88585856109ef565b506001949350505050565b5f9081525f805160206117c6833981519152602052604090206001015490565b61041c826103f3565b61042581610a4c565b61042f8383610a59565b50505050565b5f61043e610afa565b905090565b6001600160a01b038116331461046c5760405163334bd91960e11b815260040160405180910390fd5b6104768282610b03565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f811580156104c05750825b90505f8267ffffffffffffffff1660011480156104dc5750303b155b9050811580156104ea575080155b156105085760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561053257845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061055257506001600160a01b03861615155b61055a575f80fd5b6105a060405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610b7c565b6105e360405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610b92565b6105ed5f88610a59565b50610612866105fe6008600a611626565b61060d906402540be400611634565b610bf1565b831561065857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b5f805f805160206117868339815191525b6001600160a01b039093165f9081526020939093525050604090205490565b5f61030e82610c25565b5f60608082808083815f805160206117a683398151915280549091501580156106c657506001810154155b61070f5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610717610c4d565b61071f610c8b565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b5f9182525f805160206117c6833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0480546060915f8051602061178683398151915291610337906114f7565b5f336103c68185856109ef565b834211156107ee5760405163313c898160e11b815260048101859052602401610706565b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98888886108588c6001600160a01b03165f9081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090505f6108b282610ca1565b90505f6108c182878787610ccd565b9050896001600160a01b0316816001600160a01b031614610908576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610706565b6109138a8a8a610984565b50505050505050505050565b610928826103f3565b61093181610a4c565b61042f8383610b03565b6001600160a01b039182165f9081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104768383836001610cf9565b5f61099c848461093b565b90505f1981101561042f57818110156109e157604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610706565b61042f84848484035f610cf9565b6001600160a01b038316610a1857604051634b637e8f60e11b81525f6004820152602401610706565b6001600160a01b038216610a415760405163ec442f0560e01b81525f6004820152602401610706565b610476838383610ddd565b610a568133610f16565b50565b5f5f805160206117c6833981519152610a728484610749565b610af1575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610aa73390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061030e565b5f91505061030e565b5f61043e610f4f565b5f5f805160206117c6833981519152610b1c8484610749565b15610af1575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061030e565b610b84610fc2565b610b8e828261100d565b5050565b610b9a610fc2565b5f805160206117a68339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610bd384826116a3565b5060038101610be283826116a3565b505f8082556001909101555050565b6001600160a01b038216610c1a5760405163ec442f0560e01b81525f6004820152602401610706565b610b8e5f8383610ddd565b5f807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610672565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f805160206117a683398151915291610337906114f7565b60605f5f805160206117a6833981519152610326565b5f61030e610cad610afa565b8360405161190160f01b8152600281019290925260228201526042902090565b5f805f80610cdd8888888861105d565b925092509250610ced8282611125565b50909695505050505050565b5f805160206117868339815191526001600160a01b038516610d305760405163e602df0560e01b81525f6004820152602401610706565b6001600160a01b038416610d5957604051634a1406b160e11b81525f6004820152602401610706565b6001600160a01b038086165f90815260018301602090815260408083209388168352929052208390558115610dd657836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610dcd91815260200190565b60405180910390a35b5050505050565b5f805160206117868339815191526001600160a01b038416610e175781816002015f828254610e0c919061175e565b90915550610e879050565b6001600160a01b0384165f9081526020829052604090205482811015610e695760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610706565b6001600160a01b0385165f9081526020839052604090209083900390555b6001600160a01b038316610ea5576002810180548390039055610ec3565b6001600160a01b0383165f9081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f0891815260200190565b60405180910390a350505050565b610f208282610749565b610b8e5760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610706565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610f796111dd565b610f81611245565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661100b57604051631afcd79f60e31b815260040160405180910390fd5b565b611015610fc2565b5f805160206117868339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace0361104e84826116a3565b506004810161042f83826116a3565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a084111561109657505f9150600390508261111b565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa1580156110e7573d5f803e3d5ffd5b5050604051601f1901519150506001600160a01b03811661111257505f92506001915082905061111b565b92505f91508190505b9450945094915050565b5f82600381111561113857611138611771565b03611141575050565b600182600381111561115557611155611771565b036111735760405163f645eedf60e01b815260040160405180910390fd5b600282600381111561118757611187611771565b036111a85760405163fce698f760e01b815260048101829052602401610706565b60038260038111156111bc576111bc611771565b03610b8e576040516335e2f38360e21b815260048101829052602401610706565b5f5f805160206117a6833981519152816111f5610c4d565b80519091501561120d57805160209091012092915050565b8154801561121c579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f805160206117a68339815191528161125d610c8b565b80519091501561127557805160209091012092915050565b6001820154801561121c579392505050565b5f60208284031215611297575f80fd5b81356001600160e01b0319811681146112ae575f80fd5b9392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6112ae60208301846112b5565b80356001600160a01b038116811461130b575f80fd5b919050565b5f8060408385031215611321575f80fd5b61132a836112f5565b946020939093013593505050565b5f805f6060848603121561134a575f80fd5b611353846112f5565b9250611361602085016112f5565b929592945050506040919091013590565b5f60208284031215611382575f80fd5b5035919050565b5f806040838503121561139a575f80fd5b823591506113aa602084016112f5565b90509250929050565b5f80604083850312156113c4575f80fd5b6113cd836112f5565b91506113aa602084016112f5565b5f602082840312156113eb575f80fd5b6112ae826112f5565b60ff60f81b8816815260e060208201525f61141260e08301896112b5565b828103604084015261142481896112b5565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b8181101561147957835183526020938401939092019160010161145b565b50909b9a5050505050505050505050565b5f805f805f805f60e0888a0312156114a0575f80fd5b6114a9886112f5565b96506114b7602089016112f5565b95506040880135945060608801359350608088013560ff811681146114da575f80fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061150b57607f821691505b60208210810361152957634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52601160045260245ffd5b6001815b600184111561157e578085048111156115625761156261152f565b600184161561157057908102905b60019390931c928002611547565b935093915050565b5f826115945750600161030e565b816115a057505f61030e565b81600181146115b657600281146115c0576115dc565b600191505061030e565b60ff8411156115d1576115d161152f565b50506001821b61030e565b5060208310610133831016604e8410600b84101617156115ff575081810a61030e565b61160b5f198484611543565b805f190482111561161e5761161e61152f565b029392505050565b5f6112ae60ff841683611586565b808202811582820484141761030e5761030e61152f565b634e487b7160e01b5f52604160045260245ffd5b601f82111561047657805f5260205f20601f840160051c810160208510156116845750805b601f840160051c820191505b81811015610dd6575f8155600101611690565b815167ffffffffffffffff8111156116bd576116bd61164b565b6116d1816116cb84546114f7565b8461165f565b6020601f821160018114611703575f83156116ec5750848201515b5f19600385901b1c1916600184901b178455610dd6565b5f84815260208120601f198516915b828110156117325787850151825560209485019460019092019101611712565b508482101561174f57868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b8082018082111561030e5761030e61152f565b634e487b7160e01b5f52602160045260245ffdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a26469706673582212203dd31e1ad88f47a21c7b07b3f4b62a4fb23cac54ad8408caf213d1eca21745b764736f6c634300081a0033","sourceMap":"299:1259:118:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;:::i;:::-;;:::i;:::-;;;470:14:143;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;2716:144:22;;;:::i;:::-;;;;;;;:::i;5210:186::-;;;;;;:::i;:::-;;:::i;3896:152::-;4027:14;;3896:152;;;1645:25:143;;;1633:2;1618:18;3896:152:22;1499:177:143;5988:244:22;;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;:::i;:::-;;:::i;5246:136::-;;;;;;:::i;:::-;;:::i;:::-;;1474:82:118;;;1548:1;2920:36:143;;2908:2;2893:18;1474:82:118;2778:184:143;3085:112:23;;;:::i;6348:245:19:-;;;;;;:::i;:::-;;:::i;981:342:118:-;;;;;;:::i;:::-;;:::i;4106:171:22:-;;;;;;:::i;:::-;;:::i;2824:154:23:-;;;;;;:::i;:::-;;:::i;5173:903:26:-;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:19:-;;;;;;:::i;:::-;;:::i;2973:148:22:-;;;:::i;2317:49:19:-;;2362:4;2317:49;;4472:178:22;;;;;;:::i;:::-;;:::i;2098:672:23:-;;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;:::i;:::-;;:::i;4708:195:22:-;;;;;;:::i;:::-;;:::i;3443:202:19:-;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;2716:144:22:-;2761:13;2786:22;-1:-1:-1;;;;;;;;;;;2811:18:22;2786:43;;2846:1;:7;;2839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:24;5337:31:22;966:10:24;5353:7:22;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:22;;5210:186;-1:-1:-1;;;5210:186:22:o;5988:244::-;6075:4;966:10:24;6131:37:22;6147:4;966:10:24;6162:5:22;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:22;;5988:244;-1:-1:-1;;;;5988:244:22:o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;3085:112:23:-;3144:7;3170:20;:18;:20::i;:::-;3163:27;;3085:112;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;981:342:118:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;-1:-1:-1;;;;;1072:20:118;::::1;::::0;;::::1;::::0;:46:::1;;-1:-1:-1::0;;;;;;1096:22:118;::::1;::::0;::::1;1072:46;1064:55;;;::::0;::::1;;1129:32;;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:118::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:118::1;;::::0;:12:::1;:32::i;:::-;1171:40;;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:118::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:118::1;;::::0;:23:::1;:40::i;:::-;1221:38;2362:4:19;1252:6:118::0;1221:10:::1;:38::i;:::-;-1:-1:-1::0;1269:47:118::1;1275:8:::0;1299:16:::1;1548:1:::0;1299:2:::1;:16;:::i;:::-;1285:30;::::0;:11:::1;:30;:::i;:::-;1269:5;:47::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;7849:50:143;;5142:14:20;;7837:2:143;7822:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;981:342:118;;:::o;4106:171:22:-;4171:7;;-1:-1:-1;;;;;;;;;;;4215:18:22;-1:-1:-1;;;;;4250:20:22;;;:11;:20;;;;;;;;-1:-1:-1;;4250:20:22;;;;;4106:171::o;2824:154:23:-;2926:7;2952:19;2965:5;2952:12;:19::i;5173:903:26:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:26;;5511:45;;-1:-1:-1;5777:18:26;:43;;;;-1:-1:-1;5799:16:26;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:26;;8112:2:143;5769:77:26;;;8094:21:143;8151:2;8131:18;;;8124:30;-1:-1:-1;;;8170:18:143;;;8163:51;8231:18;;5769:77:26;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:26;;;-1:-1:-1;5857:212:26;;-1:-1:-1;5965:13:26;;-1:-1:-1;6000:4:26;;-1:-1:-1;6027:1:26;-1:-1:-1;6043:16:26;-1:-1:-1;5857:212:26;-1:-1:-1;;5173:903:26:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;2973:148:22:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:22;3098:16;;;:::i;4472:178::-;4541:4;966:10:24;4595:27:22;966:10:24;4612:2:22;4616:5;4595:9;:27::i;2098:672:23:-;2319:8;2301:15;:26;2297:97;;;2350:33;;-1:-1:-1;;;2350:33:23;;;;;1645:25:143;;;1618:18;;2350:33:23;1499:177:143;2297:97:23;2404:18;1279:95;2463:5;2470:7;2479:5;2486:16;2496:5;-1:-1:-1;;;;;1954:16:25;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2486:16:23;2435:78;;;;;;8679:25:143;;;;-1:-1:-1;;;;;8740:32:143;;;8720:18;;;8713:60;8809:32;;;;8789:18;;;8782:60;8858:18;;;8851:34;8901:19;;;8894:35;8945:19;;;8938:35;;;8651:19;;2435:78:23;;;;;;;;;;;;2425:89;;;;;;2404:110;;2525:12;2540:28;2557:10;2540:16;:28::i;:::-;2525:43;;2579:14;2596:28;2610:4;2616:1;2619;2622;2596:13;:28::i;:::-;2579:45;;2648:5;-1:-1:-1;;;;;2638:15:23;:6;-1:-1:-1;;;;;2638:15:23;;2634:88;;2676:35;;-1:-1:-1;;;2676:35:23;;-1:-1:-1;;;;;9176:32:143;;;2676:35:23;;;9158:51:143;9245:32;;9225:18;;;9218:60;9131:18;;2676:35:23;8984:300:143;2634:88:23;2732:31;2741:5;2748:7;2757:5;2732:8;:31::i;:::-;2287:483;;;2098:672;;;;;;;:::o;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;4708:195:22:-:0;-1:-1:-1;;;;;4867:20:22;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;10001:128::-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11745:476::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:22;:36;11906:309;;;11985:5;11966:16;:24;11962:130;;;12017:60;;-1:-1:-1;;;12017:60:22;;-1:-1:-1;;;;;9509:32:143;;12017:60:22;;;9491:51:143;9558:18;;;9551:34;;;9601:18;;;9594:34;;;9464:18;;12017:60:22;9289:345:143;11962:130:22;12133:57;12142:5;12149:7;12177:5;12158:16;:24;12184:5;12133:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:22;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:22;;6756:1;6729:30;;;9785:51:143;9758:18;;6729:30:22;9639:203:143;6684:86:22;-1:-1:-1;;;;;6783:16:22;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:22;;6851:1;6822:32;;;9785:51:143;9758:18;;6822:32:22;9639:203:143;6779:86:22;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;4015:109:26;4068:7;4094:23;:21;:23::i;7892:388:19:-;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2282:147:22;6931:20:20;:18;:20::i;:::-;2384:38:22::1;2407:5;2414:7;2384:22;:38::i;:::-;2282:147:::0;;:::o;3599:330:26:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:26;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:26::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:26::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:26:o;8733:208:22:-;-1:-1:-1;;;;;8803:21:22;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:22;;8876:1;8847:32;;;9785:51:143;9758:18;;8847:32:22;9639:203:143;8799:91:22;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;1259:164:25:-;1319:7;;1005:21;1364:19;886:156;6300:155:26;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:26;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:26;2720:156;4946:176;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3501:4:61;3495:11;-1:-1:-1;;;3519:23:61;;3571:4;3562:14;;3555:39;;;;3623:4;3614:14;;3607:34;3679:4;3664:20;;;3326:374;6887:260:60;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:60;;6887:260;-1:-1:-1;;;;;;6887:260:60:o;10976:487:22:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:22;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:22;;11212:1;11183:32;;;9785:51:143;9758:18;;11183:32:22;9639:203:143;11137:89:22;-1:-1:-1;;;;;11239:21:22;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:22;;11311:1;11283:31;;;9785:51:143;9758:18;;11283:31:22;9639:203:143;11235:90:22;-1:-1:-1;;;;;11334:20:22;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:22;11424:5;-1:-1:-1;;;;;11415:31:22;;11440:5;11415:31;;;;1645:25:143;;1633:2;1618:18;;1499:177;11415:31:22;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:22;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:22;;-1:-1:-1;7358:546:22;;-1:-1:-1;;;;;7574:17:22;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:22;;-1:-1:-1;;;;;9509:32:143;;7655:50:22;;;9491:51:143;9558:18;;;9551:34;;;9601:18;;;9594:34;;;9464:18;;7655:50:22;9289:345:143;7605:115:22;-1:-1:-1;;;;;7840:17:22;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:22;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:22;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:22;8367:4;-1:-1:-1;;;;;8358:25:22;;8377:5;8358:25;;;;1645::143;;1633:2;1618:18;;1499:177;8358:25:22;;;;;;;;7295:1095;7220:1170;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;12293:32:143;;4514:47:19;;;12275:51:143;12342:18;;;12335:34;;;12248:18;;4514:47:19;12101:274:143;4130:191:26;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;12639:25:143;;;;12680:18;;12673:34;;;;12723:18;;;12716:34;4284:13:26;12766:18:143;;;12759:34;4307:4:26;12809:19:143;;;12802:61;12611:19;;4221:92:26;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;7146:73;7084:141::o;2435:216:22:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:22;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:22::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;5203:1551:60:-:0;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:60;;-1:-1:-1;6385:30:60;;-1:-1:-1;6417:1:60;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;13101:25:143;;;13174:4;13162:17;;13142:18;;;13135:45;;;;13196:18;;;13189:34;;;13239:18;;;13232:34;;;6541:24:60;;13073:19:143;;6541:24:60;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:60;;-1:-1:-1;;6541:24:60;;;-1:-1:-1;;;;;;;6579:20:60;;6575:113;;-1:-1:-1;6631:1:60;;-1:-1:-1;6635:29:60;;-1:-1:-1;6631:1:60;;-1:-1:-1;6615:62:60;;6575:113;6706:6;-1:-1:-1;6714:20:60;;-1:-1:-1;6714:20:60;;-1:-1:-1;5203:1551:60;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:60;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:60;;;;;1645:25:143;;;1618:18;;7634:46:60;1499:177:143;7563:243:60;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:60;;;;;1645:25:143;;;1618:18;;7763:32:60;1499:177:143;7058:687:26;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:26;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:26;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:26:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:26:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:26;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:26;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:26:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:26:o;14:286:143:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:143;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:143:o;497:289::-;539:3;577:5;571:12;604:6;599:3;592:19;660:6;653:4;646:5;642:16;635:4;630:3;626:14;620:47;712:1;705:4;696:6;691:3;687:16;683:27;676:38;775:4;768:2;764:7;759:2;751:6;747:15;743:29;738:3;734:39;730:50;723:57;;;497:289;;;;:::o;791:220::-;940:2;929:9;922:21;903:4;960:45;1001:2;990:9;986:18;978:6;960:45;:::i;1016:173::-;1084:20;;-1:-1:-1;;;;;1133:31:143;;1123:42;;1113:70;;1179:1;1176;1169:12;1113:70;1016:173;;;:::o;1194:300::-;1262:6;1270;1323:2;1311:9;1302:7;1298:23;1294:32;1291:52;;;1339:1;1336;1329:12;1291:52;1362:29;1381:9;1362:29;:::i;:::-;1352:39;1460:2;1445:18;;;;1432:32;;-1:-1:-1;;;1194:300:143:o;1681:374::-;1758:6;1766;1774;1827:2;1815:9;1806:7;1802:23;1798:32;1795:52;;;1843:1;1840;1833:12;1795:52;1866:29;1885:9;1866:29;:::i;:::-;1856:39;;1914:38;1948:2;1937:9;1933:18;1914:38;:::i;:::-;1681:374;;1904:48;;-1:-1:-1;;;2021:2:143;2006:18;;;;1993:32;;1681:374::o;2060:226::-;2119:6;2172:2;2160:9;2151:7;2147:23;2143:32;2140:52;;;2188:1;2185;2178:12;2140:52;-1:-1:-1;2233:23:143;;2060:226;-1:-1:-1;2060:226:143:o;2473:300::-;2541:6;2549;2602:2;2590:9;2581:7;2577:23;2573:32;2570:52;;;2618:1;2615;2608:12;2570:52;2663:23;;;-1:-1:-1;2729:38:143;2763:2;2748:18;;2729:38;:::i;:::-;2719:48;;2473:300;;;;;:::o;2967:260::-;3035:6;3043;3096:2;3084:9;3075:7;3071:23;3067:32;3064:52;;;3112:1;3109;3102:12;3064:52;3135:29;3154:9;3135:29;:::i;:::-;3125:39;;3183:38;3217:2;3206:9;3202:18;3183:38;:::i;3232:186::-;3291:6;3344:2;3332:9;3323:7;3319:23;3315:32;3312:52;;;3360:1;3357;3350:12;3312:52;3383:29;3402:9;3383:29;:::i;3423:1238::-;3829:3;3824;3820:13;3812:6;3808:26;3797:9;3790:45;3871:3;3866:2;3855:9;3851:18;3844:31;3771:4;3898:46;3939:3;3928:9;3924:19;3916:6;3898:46;:::i;:::-;3992:9;3984:6;3980:22;3975:2;3964:9;3960:18;3953:50;4026:33;4052:6;4044;4026:33;:::i;:::-;4090:2;4075:18;;4068:34;;;-1:-1:-1;;;;;4139:32:143;;4133:3;4118:19;;4111:61;4159:3;4188:19;;4181:35;;;4253:22;;;4247:3;4232:19;;4225:51;4325:13;;4347:22;;;4397:2;4423:15;;;;-1:-1:-1;4385:15:143;;;;-1:-1:-1;4466:169:143;4480:6;4477:1;4474:13;4466:169;;;4541:13;;4529:26;;4584:2;4610:15;;;;4575:12;;;;4502:1;4495:9;4466:169;;;-1:-1:-1;4652:3:143;;3423:1238;-1:-1:-1;;;;;;;;;;;3423:1238:143:o;4666:903::-;4777:6;4785;4793;4801;4809;4817;4825;4878:3;4866:9;4857:7;4853:23;4849:33;4846:53;;;4895:1;4892;4885:12;4846:53;4918:29;4937:9;4918:29;:::i;:::-;4908:39;;4966:38;5000:2;4989:9;4985:18;4966:38;:::i;:::-;4956:48;-1:-1:-1;5073:2:143;5058:18;;5045:32;;-1:-1:-1;5174:2:143;5159:18;;5146:32;;-1:-1:-1;5256:3:143;5241:19;;5228:33;5305:4;5292:18;;5280:31;;5270:59;;5325:1;5322;5315:12;5270:59;4666:903;;;;-1:-1:-1;4666:903:143;;;;5348:7;5428:3;5413:19;;5400:33;;-1:-1:-1;5532:3:143;5517:19;;;5504:33;;4666:903;-1:-1:-1;;4666:903:143:o;5574:380::-;5653:1;5649:12;;;;5696;;;5717:61;;5771:4;5763:6;5759:17;5749:27;;5717:61;5824:2;5816:6;5813:14;5793:18;5790:38;5787:161;;5870:10;5865:3;5861:20;5858:1;5851:31;5905:4;5902:1;5895:15;5933:4;5930:1;5923:15;5787:161;;5574:380;;;:::o;5959:127::-;6020:10;6015:3;6011:20;6008:1;6001:31;6051:4;6048:1;6041:15;6075:4;6072:1;6065:15;6091:375;6179:1;6197:5;6211:249;6232:1;6222:8;6219:15;6211:249;;;6282:4;6277:3;6273:14;6267:4;6264:24;6261:50;;;6291:18;;:::i;:::-;6341:1;6331:8;6327:16;6324:49;;;6355:16;;;;6324:49;6438:1;6434:16;;;;;6394:15;;6211:249;;;6091:375;;;;;;:::o;6471:902::-;6520:5;6550:8;6540:80;;-1:-1:-1;6591:1:143;6605:5;;6540:80;6639:4;6629:76;;-1:-1:-1;6676:1:143;6690:5;;6629:76;6721:4;6739:1;6734:59;;;;6807:1;6802:174;;;;6714:262;;6734:59;6764:1;6755:10;;6778:5;;;6802:174;6839:3;6829:8;6826:17;6823:43;;;6846:18;;:::i;:::-;-1:-1:-1;;6902:1:143;6888:16;;6961:5;;6714:262;;7060:2;7050:8;7047:16;7041:3;7035:4;7032:13;7028:36;7022:2;7012:8;7009:16;7004:2;6998:4;6995:12;6991:35;6988:77;6985:203;;;-1:-1:-1;7097:19:143;;;7173:5;;6985:203;7220:42;-1:-1:-1;;7245:8:143;7239:4;7220:42;:::i;:::-;7298:6;7294:1;7290:6;7286:19;7277:7;7274:32;7271:58;;;7309:18;;:::i;:::-;7347:20;;6471:902;-1:-1:-1;;;6471:902:143:o;7378:140::-;7436:5;7465:47;7506:4;7496:8;7492:19;7486:4;7465:47;:::i;7523:168::-;7596:9;;;7627;;7644:15;;;7638:22;;7624:37;7614:71;;7665:18;;:::i;8260:127::-;8321:10;8316:3;8312:20;8309:1;8302:31;8352:4;8349:1;8342:15;8376:4;8373:1;8366:15;9973:518;10075:2;10070:3;10067:11;10064:421;;;10111:5;10108:1;10101:16;10155:4;10152:1;10142:18;10225:2;10213:10;10209:19;10206:1;10202:27;10196:4;10192:38;10261:4;10249:10;10246:20;10243:47;;;-1:-1:-1;10284:4:143;10243:47;10339:2;10334:3;10330:12;10327:1;10323:20;10317:4;10313:31;10303:41;;10394:81;10412:2;10405:5;10402:13;10394:81;;;10471:1;10457:16;;10438:1;10427:13;10394:81;;10667:1299;10793:3;10787:10;10820:18;10812:6;10809:30;10806:56;;;10842:18;;:::i;:::-;10871:97;10961:6;10921:38;10953:4;10947:11;10921:38;:::i;:::-;10915:4;10871:97;:::i;:::-;11017:4;11048:2;11037:14;;11065:1;11060:649;;;;11753:1;11770:6;11767:89;;;-1:-1:-1;11822:19:143;;;11816:26;11767:89;-1:-1:-1;;10624:1:143;10620:11;;;10616:24;10612:29;10602:40;10648:1;10644:11;;;10599:57;11869:81;;11030:930;;11060:649;9920:1;9913:14;;;9957:4;9944:18;;-1:-1:-1;;11096:20:143;;;11214:222;11228:7;11225:1;11222:14;11214:222;;;11310:19;;;11304:26;11289:42;;11417:4;11402:20;;;;11370:1;11358:14;;;;11244:12;11214:222;;;11218:3;11464:6;11455:7;11452:19;11449:201;;;11525:19;;;11519:26;-1:-1:-1;;11608:1:143;11604:14;;;11620:3;11600:24;11596:37;11592:42;11577:58;11562:74;;11449:201;-1:-1:-1;;;;11696:1:143;11680:14;;;11676:22;11663:36;;-1:-1:-1;10667:1299:143:o;11971:125::-;12036:9;;;12057:10;;;12054:36;;;12070:18;;:::i;13277:127::-;13338:10;13333:3;13329:20;13326:1;13319:31;13369:4;13366:1;13359:15;13393:4;13390:1;13383:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address)":"485cc955","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":\"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\":[{\"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\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":[],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":[{\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"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.\"}],\"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.\"}]},\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Disables potential implementation exploit\"},\"decimals()\":{\"details\":\"Returns the number of decimals\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address)\":{\"details\":\"Initializes the contract with initial parameters.\",\"params\":{\"_custody\":\"The address of the custody account.\",\"_owner\":\"The address of the owner who receives default admin role.\"}},\"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.\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decimals()\":{\"notice\":\"decimals is set to 8, following the Movement network standard decimals\"},\"initialize(address,address)\":{\"notice\":\"The ERC20 token is named \\\"Movement\\\" with symbol \\\"MOVE\\\".EIP712 domain version is set to \\\"1\\\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/MOVEToken.sol\":\"MOVEToken\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"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\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251\",\"dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d\"]},\"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\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"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/token/MOVEToken.sol\":{\"keccak256\":\"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a\",\"dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"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":"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":[{"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","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":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","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":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[],"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":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_custody","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"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":[{"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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"}]}],"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"constructor":{"details":"Disables potential implementation exploit"},"decimals()":{"details":"Returns the number of decimals"},"eip712Domain()":{"details":"See {IERC-5267}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address)":{"details":"Initializes the contract with initial parameters.","params":{"_custody":"The address of the custody account.","_owner":"The address of the owner who receives default admin role."}},"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."},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."}},"version":1},"userdoc":{"kind":"user","methods":{"decimals()":{"notice":"decimals is set to 8, following the Movement network standard decimals"},"initialize(address,address)":{"notice":"The ERC20 token is named \"Movement\" with symbol \"MOVE\".EIP712 domain version is set to \"1\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address."}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/MOVEToken.sol":"MOVEToken"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"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":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"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/Strings.sol":{"keccak256":"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c","urls":["bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251","dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d"],"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":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/token/MOVEToken.sol":{"keccak256":"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22","urls":["bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a","dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[],"types":{}},"ast":{"absolutePath":"src/token/MOVEToken.sol","id":62878,"exportedSymbols":{"AccessControlUpgradeable":[39448],"ERC20PermitUpgradeable":[40670],"MOVEToken":[62877]},"nodeType":"SourceUnit","src":"32:1526:118","nodes":[{"id":62798,"nodeType":"PragmaDirective","src":"32:24:118","nodes":[],"literals":["solidity","^","0.8",".19"]},{"id":62800,"nodeType":"ImportDirective","src":"58:125:118","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":62878,"sourceUnit":40671,"symbolAliases":[{"foreign":{"id":62799,"name":"ERC20PermitUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40670,"src":"66:22:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":62802,"nodeType":"ImportDirective","src":"184:113:118","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol","nameLocation":"-1:-1:-1","scope":62878,"sourceUnit":39449,"symbolAliases":[{"foreign":{"id":62801,"name":"AccessControlUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39448,"src":"192:24:118","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":62877,"nodeType":"ContractDefinition","src":"299:1259:118","nodes":[{"id":62814,"nodeType":"FunctionDefinition","src":"447:39:118","nodes":[],"body":{"id":62813,"nodeType":"Block","src":"461:25:118","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":62810,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39670,"src":"462:20:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":62811,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"462:22:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62812,"nodeType":"ExpressionStatement","src":"462:22:118"}]},"documentation":{"id":62807,"nodeType":"StructuredDocumentation","src":"377:65:118","text":" @dev Disables potential implementation exploit"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":62808,"nodeType":"ParameterList","parameters":[],"src":"458:2:118"},"returnParameters":{"id":62809,"nodeType":"ParameterList","parameters":[],"src":"461:0:118"},"scope":62877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62866,"nodeType":"FunctionDefinition","src":"981:342:118","nodes":[],"body":{"id":62865,"nodeType":"Block","src":"1054:269:118","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":62837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62830,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62825,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62817,"src":"1072:6:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":62828,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1090:1:118","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":62827,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1082:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62826,"name":"address","nodeType":"ElementaryTypeName","src":"1082:7:118","typeDescriptions":{}}},"id":62829,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1082:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1072:20:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62836,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62831,"name":"_custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62819,"src":"1096:8:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"hexValue":"30","id":62834,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1116:1:118","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":62833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1108:7:118","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62832,"name":"address","nodeType":"ElementaryTypeName","src":"1108:7:118","typeDescriptions":{}}},"id":62835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1108:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"1096:22:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"1072:46:118","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":62824,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1064:7:118","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":62838,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1064:55:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62839,"nodeType":"ExpressionStatement","src":"1064:55:118"},{"expression":{"arguments":[{"hexValue":"4d6f76656d656e74","id":62841,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1142:10:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},"value":"Movement"},{"hexValue":"4d4f5645","id":62842,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1154:6:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_94304e8d07ec49123c30284d16c4a1082e90258cc0faf510314d9c3808edcda0","typeString":"literal_string \"MOVE\""},"value":"MOVE"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},{"typeIdentifier":"t_stringliteral_94304e8d07ec49123c30284d16c4a1082e90258cc0faf510314d9c3808edcda0","typeString":"literal_string \"MOVE\""}],"id":62840,"name":"__ERC20_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39952,"src":"1129:12:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":62843,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1129:32:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62844,"nodeType":"ExpressionStatement","src":"1129:32:118"},{"expression":{"arguments":[{"hexValue":"4d6f76656d656e74","id":62846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1195:10:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},"value":"Movement"},{"hexValue":"31","id":62847,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1207:3:118","typeDescriptions":{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""},"value":"1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_76cd1e2e4e245339bcdd0e0d14f4067a3f0952012fc7c5331fdec600bb235252","typeString":"literal_string \"Movement\""},{"typeIdentifier":"t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6","typeString":"literal_string \"1\""}],"id":62845,"name":"__EIP712_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40924,"src":"1171:23:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$","typeString":"function (string memory,string memory)"}},"id":62848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1171:40:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62849,"nodeType":"ExpressionStatement","src":"1171:40:118"},{"expression":{"arguments":[{"id":62851,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39114,"src":"1232:18:118","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":62852,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62817,"src":"1252:6:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":62850,"name":"_grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39401,"src":"1221:10:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) returns (bool)"}},"id":62853,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1221:38:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62854,"nodeType":"ExpressionStatement","src":"1221:38:118"},{"expression":{"arguments":[{"id":62856,"name":"_custody","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62819,"src":"1275:8:118","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":62862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130303030303030303030","id":62857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1285:11:118","typeDescriptions":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"value":"10000000000"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":62861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"3130","id":62858,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1299:2:118","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"nodeType":"BinaryOperation","operator":"**","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":62859,"name":"decimals","nodeType":"Identifier","overloadedDeclarations":[62876],"referencedDeclaration":62876,"src":"1305:8:118","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$__$returns$_t_uint8_$","typeString":"function () pure returns (uint8)"}},"id":62860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1305:10:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"1299:16:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1285:30:118","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":62855,"name":"_mint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":40333,"src":"1269:5:118","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":62863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1269:47:118","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62864,"nodeType":"ExpressionStatement","src":"1269:47:118"}]},"documentation":{"id":62815,"nodeType":"StructuredDocumentation","src":"492:484:118","text":" @dev Initializes the contract with initial parameters.\n @param _owner The address of the owner who receives default admin role.\n @param _custody The address of the custody account.\n @notice The ERC20 token is named \"Movement\" with symbol \"MOVE\".\n @notice EIP712 domain version is set to \"1\" for signatures.\n @notice The owner is granted the `DEFAULT_ADMIN_ROLE`.\n @notice 10 billion MOVE tokens are minted to the owner's address."},"functionSelector":"485cc955","implemented":true,"kind":"function","modifiers":[{"id":62822,"kind":"modifierInvocation","modifierName":{"id":62821,"name":"initializer","nameLocations":["1042:11:118"],"nodeType":"IdentifierPath","referencedDeclaration":39556,"src":"1042:11:118"},"nodeType":"ModifierInvocation","src":"1042:11:118"}],"name":"initialize","nameLocation":"990:10:118","parameters":{"id":62820,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62817,"mutability":"mutable","name":"_owner","nameLocation":"1009:6:118","nodeType":"VariableDeclaration","scope":62866,"src":"1001:14:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62816,"name":"address","nodeType":"ElementaryTypeName","src":"1001:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62819,"mutability":"mutable","name":"_custody","nameLocation":"1025:8:118","nodeType":"VariableDeclaration","scope":62866,"src":"1017:16:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62818,"name":"address","nodeType":"ElementaryTypeName","src":"1017:7:118","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1000:34:118"},"returnParameters":{"id":62823,"nodeType":"ParameterList","parameters":[],"src":"1054:0:118"},"scope":62877,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62876,"nodeType":"FunctionDefinition","src":"1474:82:118","nodes":[],"body":{"id":62875,"nodeType":"Block","src":"1531:25:118","nodes":[],"statements":[{"expression":{"hexValue":"38","id":62873,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1548:1:118","typeDescriptions":{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},"value":"8"},"functionReturnParameters":62872,"id":62874,"nodeType":"Return","src":"1541:8:118"}]},"baseFunctions":[40021],"documentation":{"id":62867,"nodeType":"StructuredDocumentation","src":"1329:140:118","text":" @dev Returns the number of decimals\n @notice decimals is set to 8, following the Movement network standard decimals"},"functionSelector":"313ce567","implemented":true,"kind":"function","modifiers":[],"name":"decimals","nameLocation":"1483:8:118","overrides":{"id":62869,"nodeType":"OverrideSpecifier","overrides":[],"src":"1506:8:118"},"parameters":{"id":62868,"nodeType":"ParameterList","parameters":[],"src":"1491:2:118"},"returnParameters":{"id":62872,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62871,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":62876,"src":"1524:5:118","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":62870,"name":"uint8","nodeType":"ElementaryTypeName","src":"1524:5:118","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"1523:7:118"},"scope":62877,"stateMutability":"pure","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":62803,"name":"ERC20PermitUpgradeable","nameLocations":["321:22:118"],"nodeType":"IdentifierPath","referencedDeclaration":40670,"src":"321:22:118"},"id":62804,"nodeType":"InheritanceSpecifier","src":"321:22:118"},{"baseName":{"id":62805,"name":"AccessControlUpgradeable","nameLocations":["345:24:118"],"nodeType":"IdentifierPath","referencedDeclaration":39448,"src":"345:24:118"},"id":62806,"nodeType":"InheritanceSpecifier","src":"345:24:118"}],"canonicalName":"MOVEToken","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[62877,39448,41211,46535,41590,40670,40827,41171,42894,43866,40501,42946,43830,43804,40716,39702],"name":"MOVEToken","nameLocation":"308:9:118","scope":62878,"usedErrors":[39465,39468,40536,40543,40730,41517,41520,42916,42921,42926,42935,42940,42945,46088,46093,46098],"usedEvents":[39473,41529,41538,41547,42874,43738,43747]}],"license":"MIT"},"id":118} +======= +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"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":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_custody","type":"address","internalType":"address"}],"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":"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":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"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":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"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":"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":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6118b5806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;447:39;;;;;;;;;-1:-1:-1;462:22:115;:20;:22::i;:::-;299:1259;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:140;;;8087:29:20;;146:2:140;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:140:-;299:1259:115;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;2716:144:22;;;:::i;:::-;;;;;;;:::i;5210:186::-;;;;;;:::i;:::-;;:::i;3896:152::-;4027:14;;3896:152;;;1756:25:140;;;1744:2;1729:18;3896:152:22;1610:177:140;5988:244:22;;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;:::i;:::-;;:::i;5246:136::-;;;;;;:::i;:::-;;:::i;:::-;;1474:82:115;;;1548:1;3031:36:140;;3019:2;3004:18;1474:82:115;2889:184:140;3085:112:23;;;:::i;6348:245:19:-;;;;;;:::i;:::-;;:::i;981:342:115:-;;;;;;:::i;:::-;;:::i;4106:171:22:-;;;;;;:::i;:::-;;:::i;2824:154:23:-;;;;;;:::i;:::-;;:::i;5173:903:26:-;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:19:-;;;;;;:::i;:::-;;:::i;2973:148:22:-;;;:::i;2317:49:19:-;;2362:4;2317:49;;4472:178:22;;;;;;:::i;:::-;;:::i;2098:672:23:-;;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;:::i;:::-;;:::i;4708:195:22:-;;;;;;:::i;:::-;;:::i;3443:202:19:-;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;2716:144:22:-;2761:13;2786:22;-1:-1:-1;;;;;;;;;;;2811:18:22;2786:43;;2846:1;:7;;2839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:24;5337:31:22;966:10:24;5353:7:22;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:22;;5210:186;-1:-1:-1;;;5210:186:22:o;5988:244::-;6075:4;966:10:24;6131:37:22;6147:4;966:10:24;6162:5:22;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:22;;5988:244;-1:-1:-1;;;;5988:244:22:o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;3085:112:23:-;3144:7;3170:20;:18;:20::i;:::-;3163:27;;3085:112;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;981:342:115:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;-1:-1:-1;;;;;1072:20:115;::::1;::::0;;::::1;::::0;:46:::1;;-1:-1:-1::0;;;;;;1096:22:115;::::1;::::0;::::1;1072:46;1064:55;;;::::0;::::1;;1129:32;;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;:12:::1;:32::i;:::-;1171:40;;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;:23:::1;:40::i;:::-;1221:38;2362:4:19;1252:6:115::0;1221:10:::1;:38::i;:::-;-1:-1:-1::0;1269:47:115::1;1275:8:::0;1299:16:::1;1548:1:::0;1299:2:::1;:16;:::i;:::-;1285:30;::::0;:11:::1;:30;:::i;:::-;1269:5;:47::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;7960:50:140;;5142:14:20;;7948:2:140;7933:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;981:342:115;;:::o;4106:171:22:-;4171:7;;-1:-1:-1;;;;;;;;;;;4215:18:22;-1:-1:-1;;;;;4250:20:22;;;:11;:20;;;;;;;;-1:-1:-1;;4250:20:22;;;;;4106:171::o;2824:154:23:-;2926:7;2952:19;2965:5;2952:12;:19::i;5173:903:26:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:26;;5511:45;;-1:-1:-1;5777:18:26;:43;;;;-1:-1:-1;5799:16:26;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:26;;8223:2:140;5769:77:26;;;8205:21:140;8262:2;8242:18;;;8235:30;-1:-1:-1;;;8281:18:140;;;8274:51;8342:18;;5769:77:26;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:26;;;-1:-1:-1;5857:212:26;;-1:-1:-1;5965:13:26;;-1:-1:-1;6000:4:26;;-1:-1:-1;6027:1:26;-1:-1:-1;6043:16:26;-1:-1:-1;5857:212:26;-1:-1:-1;;5173:903:26:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;2973:148:22:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:22;3098:16;;;:::i;4472:178::-;4541:4;966:10:24;4595:27:22;966:10:24;4612:2:22;4616:5;4595:9;:27::i;2098:672:23:-;2319:8;2301:15;:26;2297:97;;;2350:33;;-1:-1:-1;;;2350:33:23;;;;;1756:25:140;;;1729:18;;2350:33:23;1610:177:140;2297:97:23;2404:18;1279:95;2463:5;2470:7;2479:5;2486:16;2496:5;-1:-1:-1;;;;;1954:16:25;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2486:16:23;2435:78;;;;;;8790:25:140;;;;-1:-1:-1;;;;;8851:32:140;;;8831:18;;;8824:60;8920:32;;;;8900:18;;;8893:60;8969:18;;;8962:34;9012:19;;;9005:35;9056:19;;;9049:35;;;8762:19;;2435:78:23;;;;;;;;;;;;2425:89;;;;;;2404:110;;2525:12;2540:28;2557:10;2540:16;:28::i;:::-;2525:43;;2579:14;2596:28;2610:4;2616:1;2619;2622;2596:13;:28::i;:::-;2579:45;;2648:5;-1:-1:-1;;;;;2638:15:23;:6;-1:-1:-1;;;;;2638:15:23;;2634:88;;2676:35;;-1:-1:-1;;;2676:35:23;;-1:-1:-1;;;;;9287:32:140;;;2676:35:23;;;9269:51:140;9356:32;;9336:18;;;9329:60;9242:18;;2676:35:23;9095:300:140;2634:88:23;2732:31;2741:5;2748:7;2757:5;2732:8;:31::i;:::-;2287:483;;;2098:672;;;;;;;:::o;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;4708:195:22:-:0;-1:-1:-1;;;;;4867:20:22;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;10001:128::-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11745:476::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:22;:36;11906:309;;;11985:5;11966:16;:24;11962:130;;;12017:60;;-1:-1:-1;;;12017:60:22;;-1:-1:-1;;;;;9620:32:140;;12017:60:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;12017:60:22;9400:345:140;11962:130:22;12133:57;12142:5;12149:7;12177:5;12158:16;:24;12184:5;12133:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:22;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:22;;6756:1;6729:30;;;9896:51:140;9869:18;;6729:30:22;9750:203:140;6684:86:22;-1:-1:-1;;;;;6783:16:22;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:22;;6851:1;6822:32;;;9896:51:140;9869:18;;6822:32:22;9750:203:140;6779:86:22;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;4015:109:26;4068:7;4094:23;:21;:23::i;7892:388:19:-;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2282:147:22;6931:20:20;:18;:20::i;:::-;2384:38:22::1;2407:5;2414:7;2384:22;:38::i;:::-;2282:147:::0;;:::o;3599:330:26:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:26;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:26::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:26::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:26:o;8733:208:22:-;-1:-1:-1;;;;;8803:21:22;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:22;;8876:1;8847:32;;;9896:51:140;9869:18;;8847:32:22;9750:203:140;8799:91:22;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;1259:164:25:-;1319:7;;1005:21;1364:19;886:156;6300:155:26;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:26;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:26;2720:156;4946:176;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3501:4:61;3495:11;-1:-1:-1;;;3519:23:61;;3571:4;3562:14;;3555:39;;;;3623:4;3614:14;;3607:34;3679:4;3664:20;;;3326:374;6887:260:60;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:60;;6887:260;-1:-1:-1;;;;;;6887:260:60:o;10976:487:22:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:22;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:22;;11212:1;11183:32;;;9896:51:140;9869:18;;11183:32:22;9750:203:140;11137:89:22;-1:-1:-1;;;;;11239:21:22;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:22;;11311:1;11283:31;;;9896:51:140;9869:18;;11283:31:22;9750:203:140;11235:90:22;-1:-1:-1;;;;;11334:20:22;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:22;11424:5;-1:-1:-1;;;;;11415:31:22;;11440:5;11415:31;;;;1756:25:140;;1744:2;1729:18;;1610:177;11415:31:22;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:22;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:22;;-1:-1:-1;7358:546:22;;-1:-1:-1;;;;;7574:17:22;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:22;;-1:-1:-1;;;;;9620:32:140;;7655:50:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;7655:50:22;9400:345:140;7605:115:22;-1:-1:-1;;;;;7840:17:22;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:22;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:22;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:22;8367:4;-1:-1:-1;;;;;8358:25:22;;8377:5;8358:25;;;;1756::140;;1744:2;1729:18;;1610:177;8358:25:22;;;;;;;;7295:1095;7220:1170;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;12404:32:140;;4514:47:19;;;12386:51:140;12453:18;;;12446:34;;;12359:18;;4514:47:19;12212:274:140;4130:191:26;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;12750:25:140;;;;12791:18;;12784:34;;;;12834:18;;;12827:34;4284:13:26;12877:18:140;;;12870:34;4307:4:26;12920:19:140;;;12913:61;12722:19;;4221:92:26;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;7146:73;7084:141::o;2435:216:22:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:22;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:22::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;5203:1551:60:-:0;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:60;;-1:-1:-1;6385:30:60;;-1:-1:-1;6417:1:60;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;13212:25:140;;;13285:4;13273:17;;13253:18;;;13246:45;;;;13307:18;;;13300:34;;;13350:18;;;13343:34;;;6541:24:60;;13184:19:140;;6541:24:60;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:60;;-1:-1:-1;;6541:24:60;;;-1:-1:-1;;;;;;;6579:20:60;;6575:113;;-1:-1:-1;6631:1:60;;-1:-1:-1;6635:29:60;;-1:-1:-1;6631:1:60;;-1:-1:-1;6615:62:60;;6575:113;6706:6;-1:-1:-1;6714:20:60;;-1:-1:-1;6714:20:60;;-1:-1:-1;5203:1551:60;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:60;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:60;;;;;1756:25:140;;;1729:18;;7634:46:60;1610:177:140;7563:243:60;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:60;;;;;1756:25:140;;;1729:18;;7763:32:60;1610:177:140;7058:687:26;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:26;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:26;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:26:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:26:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:26;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:26;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:26:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:26:o;14:286:140:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:140:o;497:400::-;539:3;577:5;571:12;604:6;599:3;592:19;629:1;639:139;653:6;650:1;647:13;639:139;;;761:4;746:13;;;742:24;;736:31;716:11;;;712:22;;705:63;668:12;639:139;;;643:3;823:1;816:4;807:6;802:3;798:16;794:27;787:38;886:4;879:2;875:7;870:2;862:6;858:15;854:29;849:3;845:39;841:50;834:57;;;497:400;;;;:::o;902:220::-;1051:2;1040:9;1033:21;1014:4;1071:45;1112:2;1101:9;1097:18;1089:6;1071:45;:::i;1127:173::-;1195:20;;-1:-1:-1;;;;;1244:31:140;;1234:42;;1224:70;;1290:1;1287;1280:12;1224:70;1127:173;;;:::o;1305:300::-;1373:6;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1473:29;1492:9;1473:29;:::i;:::-;1463:39;1571:2;1556:18;;;;1543:32;;-1:-1:-1;;;1305:300:140:o;1792:374::-;1869:6;1877;1885;1938:2;1926:9;1917:7;1913:23;1909:32;1906:52;;;1954:1;1951;1944:12;1906:52;1977:29;1996:9;1977:29;:::i;:::-;1967:39;;2025:38;2059:2;2048:9;2044:18;2025:38;:::i;:::-;1792:374;;2015:48;;-1:-1:-1;;;2132:2:140;2117:18;;;;2104:32;;1792:374::o;2171:226::-;2230:6;2283:2;2271:9;2262:7;2258:23;2254:32;2251:52;;;2299:1;2296;2289:12;2251:52;-1:-1:-1;2344:23:140;;2171:226;-1:-1:-1;2171:226:140:o;2584:300::-;2652:6;2660;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2774:23;;;-1:-1:-1;2840:38:140;2874:2;2859:18;;2840:38;:::i;:::-;2830:48;;2584:300;;;;;:::o;3078:260::-;3146:6;3154;3207:2;3195:9;3186:7;3182:23;3178:32;3175:52;;;3223:1;3220;3213:12;3175:52;3246:29;3265:9;3246:29;:::i;:::-;3236:39;;3294:38;3328:2;3317:9;3313:18;3294:38;:::i;3343:186::-;3402:6;3455:2;3443:9;3434:7;3430:23;3426:32;3423:52;;;3471:1;3468;3461:12;3423:52;3494:29;3513:9;3494:29;:::i;3534:1238::-;3940:3;3935;3931:13;3923:6;3919:26;3908:9;3901:45;3982:3;3977:2;3966:9;3962:18;3955:31;3882:4;4009:46;4050:3;4039:9;4035:19;4027:6;4009:46;:::i;:::-;4103:9;4095:6;4091:22;4086:2;4075:9;4071:18;4064:50;4137:33;4163:6;4155;4137:33;:::i;:::-;4201:2;4186:18;;4179:34;;;-1:-1:-1;;;;;4250:32:140;;4244:3;4229:19;;4222:61;4270:3;4299:19;;4292:35;;;4364:22;;;4358:3;4343:19;;4336:51;4436:13;;4458:22;;;4508:2;4534:15;;;;-1:-1:-1;4496:15:140;;;;-1:-1:-1;4577:169:140;4591:6;4588:1;4585:13;4577:169;;;4652:13;;4640:26;;4695:2;4721:15;;;;4686:12;;;;4613:1;4606:9;4577:169;;;-1:-1:-1;4763:3:140;;3534:1238;-1:-1:-1;;;;;;;;;;;3534:1238:140:o;4777:903::-;4888:6;4896;4904;4912;4920;4928;4936;4989:3;4977:9;4968:7;4964:23;4960:33;4957:53;;;5006:1;5003;4996:12;4957:53;5029:29;5048:9;5029:29;:::i;:::-;5019:39;;5077:38;5111:2;5100:9;5096:18;5077:38;:::i;:::-;5067:48;-1:-1:-1;5184:2:140;5169:18;;5156:32;;-1:-1:-1;5285:2:140;5270:18;;5257:32;;-1:-1:-1;5367:3:140;5352:19;;5339:33;5416:4;5403:18;;5391:31;;5381:59;;5436:1;5433;5426:12;5381:59;4777:903;;;;-1:-1:-1;4777:903:140;;;;5459:7;5539:3;5524:19;;5511:33;;-1:-1:-1;5643:3:140;5628:19;;;5615:33;;4777:903;-1:-1:-1;;4777:903:140:o;5685:380::-;5764:1;5760:12;;;;5807;;;5828:61;;5882:4;5874:6;5870:17;5860:27;;5828:61;5935:2;5927:6;5924:14;5904:18;5901:38;5898:161;;5981:10;5976:3;5972:20;5969:1;5962:31;6016:4;6013:1;6006:15;6044:4;6041:1;6034:15;5898:161;;5685:380;;;:::o;6070:127::-;6131:10;6126:3;6122:20;6119:1;6112:31;6162:4;6159:1;6152:15;6186:4;6183:1;6176:15;6202:375;6290:1;6308:5;6322:249;6343:1;6333:8;6330:15;6322:249;;;6393:4;6388:3;6384:14;6378:4;6375:24;6372:50;;;6402:18;;:::i;:::-;6452:1;6442:8;6438:16;6435:49;;;6466:16;;;;6435:49;6549:1;6545:16;;;;;6505:15;;6322:249;;;6202:375;;;;;;:::o;6582:902::-;6631:5;6661:8;6651:80;;-1:-1:-1;6702:1:140;6716:5;;6651:80;6750:4;6740:76;;-1:-1:-1;6787:1:140;6801:5;;6740:76;6832:4;6850:1;6845:59;;;;6918:1;6913:174;;;;6825:262;;6845:59;6875:1;6866:10;;6889:5;;;6913:174;6950:3;6940:8;6937:17;6934:43;;;6957:18;;:::i;:::-;-1:-1:-1;;7013:1:140;6999:16;;7072:5;;6825:262;;7171:2;7161:8;7158:16;7152:3;7146:4;7143:13;7139:36;7133:2;7123:8;7120:16;7115:2;7109:4;7106:12;7102:35;7099:77;7096:203;;;-1:-1:-1;7208:19:140;;;7284:5;;7096:203;7331:42;-1:-1:-1;;7356:8:140;7350:4;7331:42;:::i;:::-;7409:6;7405:1;7401:6;7397:19;7388:7;7385:32;7382:58;;;7420:18;;:::i;:::-;7458:20;;6582:902;-1:-1:-1;;;6582:902:140:o;7489:140::-;7547:5;7576:47;7617:4;7607:8;7603:19;7597:4;7576:47;:::i;7634:168::-;7707:9;;;7738;;7755:15;;;7749:22;;7735:37;7725:71;;7776:18;;:::i;8371:127::-;8432:10;8427:3;8423:20;8420:1;8413:31;8463:4;8460:1;8453:15;8487:4;8484:1;8477:15;10084:518;10186:2;10181:3;10178:11;10175:421;;;10222:5;10219:1;10212:16;10266:4;10263:1;10253:18;10336:2;10324:10;10320:19;10317:1;10313:27;10307:4;10303:38;10372:4;10360:10;10357:20;10354:47;;;-1:-1:-1;10395:4:140;10354:47;10450:2;10445:3;10441:12;10438:1;10434:20;10428:4;10424:31;10414:41;;10505:81;10523:2;10516:5;10513:13;10505:81;;;10582:1;10568:16;;10549:1;10538:13;10505:81;;10778:1299;10904:3;10898:10;10931:18;10923:6;10920:30;10917:56;;;10953:18;;:::i;:::-;10982:97;11072:6;11032:38;11064:4;11058:11;11032:38;:::i;:::-;11026:4;10982:97;:::i;:::-;11128:4;11159:2;11148:14;;11176:1;11171:649;;;;11864:1;11881:6;11878:89;;;-1:-1:-1;11933:19:140;;;11927:26;11878:89;-1:-1:-1;;10735:1:140;10731:11;;;10727:24;10723:29;10713:40;10759:1;10755:11;;;10710:57;11980:81;;11141:930;;11171:649;10031:1;10024:14;;;10068:4;10055:18;;-1:-1:-1;;11207:20:140;;;11325:222;11339:7;11336:1;11333:14;11325:222;;;11421:19;;;11415:26;11400:42;;11528:4;11513:20;;;;11481:1;11469:14;;;;11355:12;11325:222;;;11329:3;11575:6;11566:7;11563:19;11560:201;;;11636:19;;;11630:26;-1:-1:-1;;11719:1:140;11715:14;;;11731:3;11711:24;11707:37;11703:42;11688:58;11673:74;;11560:201;-1:-1:-1;;;;11807:1:140;11791:14;;;11787:22;11774:36;;-1:-1:-1;10778:1299:140:o;12082:125::-;12147:9;;;12168:10;;;12165:36;;;12181:18;;:::i;13388:127::-;13449:10;13444:3;13440:20;13437:1;13430:31;13480:4;13477:1;13470:15;13504:4;13501:1;13494:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address)":"485cc955","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":\"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\":[{\"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\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":[],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":[{\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"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.\"}],\"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.\"}]},\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Disables potential implementation exploit\"},\"decimals()\":{\"details\":\"Returns the number of decimals\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address)\":{\"details\":\"Initializes the contract with initial parameters.\",\"params\":{\"_custody\":\"The address of the custody account.\",\"_owner\":\"The address of the owner who receives default admin role.\"}},\"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.\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decimals()\":{\"notice\":\"decimals is set to 8, following the Movement network standard decimals\"},\"initialize(address,address)\":{\"notice\":\"The ERC20 token is named \\\"Movement\\\" with symbol \\\"MOVE\\\".EIP712 domain version is set to \\\"1\\\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/MOVEToken.sol\":\"MOVEToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"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\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251\",\"dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d\"]},\"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\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"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/token/MOVEToken.sol\":{\"keccak256\":\"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a\",\"dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"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":"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":[{"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","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":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","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":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[],"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":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_custody","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"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":[{"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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"}]}],"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"constructor":{"details":"Disables potential implementation exploit"},"decimals()":{"details":"Returns the number of decimals"},"eip712Domain()":{"details":"See {IERC-5267}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address)":{"details":"Initializes the contract with initial parameters.","params":{"_custody":"The address of the custody account.","_owner":"The address of the owner who receives default admin role."}},"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."},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."}},"version":1},"userdoc":{"kind":"user","methods":{"decimals()":{"notice":"decimals is set to 8, following the Movement network standard decimals"},"initialize(address,address)":{"notice":"The ERC20 token is named \"Movement\" with symbol \"MOVE\".EIP712 domain version is set to \"1\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address."}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/MOVEToken.sol":"MOVEToken"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"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":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"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/Strings.sol":{"keccak256":"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c","urls":["bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251","dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d"],"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":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/token/MOVEToken.sol":{"keccak256":"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22","urls":["bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a","dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H"],"license":"MIT"}},"version":1},"id":115} +>>>>>>> main diff --git a/protocol/pcp/cli/client/abis/MovementStaking.json b/protocol/pcp/cli/client/abis/MovementStaking.json index bc40bdb5..d49fe5cf 100644 --- a/protocol/pcp/cli/client/abis/MovementStaking.json +++ b/protocol/pcp/cli/client/abis/MovementStaking.json @@ -1 +1,5 @@ -{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","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":"WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeAllStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentAcceptingEpochByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"currentAcceptingEpoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"domainGenesisAccepted","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochDurationByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochByL1BlockTime","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextPresentEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredAttesters","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredCustodians","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getUnstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnstakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerDomain","inputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAddressFromWhitelist","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardArray","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardFromDomain","inputs":[{"name":"attester","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollOverEpoch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"custodians","type":"address[]","internalType":"address[]"},{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"refundAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakesByDomainEpochCustodian","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"unstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unstakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"whitelistAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AttesterEpochRolledOver","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterStaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterUnstaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EpochRolledOver","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CustodianTransferAmountMismatch","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EpochDurationNotSet","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisAlreadyAccepted","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"StakeExceedsGenesisStake","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b5060016009556080516132f161004260003960008181611f2801528181611f51015261209501526132f16000f3fe6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;1171:4:21;1128:48;;766:27108:111;;;;;;;;;-1:-1:-1;1857:1:57;2061:7;:21;766:27108:111;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;1474:208:112;;;;;;;;;;-1:-1:-1;1474:208:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1434:25:140;;;1422:2;1407:18;1474:208:112;1288:177:140;10872:215:111;;;;;;;;;;-1:-1:-1;10872:215:111;;;;;:::i;:::-;;:::i;2321:419::-;;;;;;;;;;-1:-1:-1;2321:419:111;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4287:406::-;;;;;;;;;;-1:-1:-1;4287:406:111;;;;;:::i;:::-;;:::i;:::-;;8307:134;;;;;;;;;;-1:-1:-1;8307:134:111;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;11409:381:111:-;;;;;;;;;;-1:-1:-1;11409:381:111;;;;;:::i;:::-;;:::i;26739:151::-;;;;;;;;;;-1:-1:-1;26739:151:111;;;;;:::i;:::-;;:::i;5246:136:19:-;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;1686:554:111:-;;;;;;;;;;-1:-1:-1;1686:554:111;;;;;:::i;:::-;;:::i;10462:330::-;;;;;;;;;;-1:-1:-1;10462:330:111;;;;;:::i;:::-;;:::i;6348:245:19:-;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;650:77:112:-;;;;;;;;;;-1:-1:-1;650:77:112;;;;;:::i;:::-;;;;;;;;;;;;;;11796:192:111;;;;;;;;;;-1:-1:-1;11796:192:111;;;;;:::i;:::-;;:::i;26593:140::-;;;;;;;;;;-1:-1:-1;26593:140:111;;;;;:::i;:::-;;:::i;2827:1107::-;;;;;;;;;;-1:-1:-1;2827:1107:111;;;;;:::i;:::-;;:::i;25966:457::-;;;;;;;;;;-1:-1:-1;25966:457:111;;;;;:::i;:::-;;:::i;4161:214:21:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;26982:542:111:-;;;;;;;;;;-1:-1:-1;26982:542:111;;;;;:::i;:::-;;:::i;27695:176::-;;;;;;;;;;-1:-1:-1;27695:176:111;;;;;:::i;:::-;;:::i;9069:182::-;;;;;;;;;;-1:-1:-1;9069:182:111;;;;;:::i;:::-;;:::i;4001:125::-;;;;;;;;;;-1:-1:-1;4001:125:111;;;;;:::i;:::-;-1:-1:-1;;;;;4090:29:111;4064:7;4090:29;;;:21;:29;;;;;;;4001:125;25461:244;;;;;;;;;;-1:-1:-1;25461:244:111;;;;;:::i;:::-;;:::i;13972:972::-;;;;;;;;;;-1:-1:-1;13972:972:111;;;;;:::i;:::-;;:::i;8661:180::-;;;;;;;;;;-1:-1:-1;8661:180:111;;;;;:::i;:::-;;:::i;2462:68:112:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2462:68:112;;10109:254:111;;;;;;;;;;-1:-1:-1;10109:254:111;;;;;:::i;:::-;;:::i;514:86:113:-;;;;;;;;;;;;;:::i;2186:152:112:-;;;;;;;;;;-1:-1:-1;2186:152:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4699:1563:111:-;;;;;;;;;;;;;:::i;9342:250::-;;;;;;;;;;-1:-1:-1;9342:250:111;;;;;:::i;:::-;;:::i;11173:230::-;;;;;;;;;;-1:-1:-1;11173:230:111;;;;;:::i;:::-;;:::i;2317:49:19:-;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;9689:326:111;;;;;;;;;;-1:-1:-1;9689:326:111;;;;;:::i;:::-;;:::i;19744:1588::-;;;;;;;;;;-1:-1:-1;19744:1588:111;;;;;:::i;:::-;;:::i;17307:108::-;;;;;;;;;;;;;:::i;1819:58:21:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;977:93:112:-;;;;;;;;;;-1:-1:-1;977:93:112;;;;;:::i;:::-;;;;;;;;;;;;;;12036:1885:111;;;;;;;;;;-1:-1:-1;12036:1885:111;;;;;:::i;:::-;;:::i;1051:125::-;;;;;;;;;;-1:-1:-1;1051:125:111;;;;;:::i;:::-;;:::i;2345:60:112:-;;;;;;;;;;-1:-1:-1;2345:60:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;1245:359:111;;;;;;;;;;-1:-1:-1;1245:359:111;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;8002:226:111:-;;;;;;;;;;-1:-1:-1;8002:226:111;;;;;:::i;:::-;;:::i;1832:210:112:-;;;;;;;;;;-1:-1:-1;1832:210:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:19;;;;;;;;;;-1:-1:-1;471:19:112;;;;-1:-1:-1;;;;;471:19:112;;;;;;-1:-1:-1;;;;;11791:32:140;;;11773:51;;11761:2;11746:18;471:19:112;11611:219:140;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;10872:215:111:-;-1:-1:-1;;;;;11026:36:111;;;11000:7;11026:36;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;10872:215;;;;;;:::o;2321:419::-;-1:-1:-1;;;;;2488:35:111;;2432:26;2488:35;;;:27;:35;;;;;2404:16;;2432:26;2488:44;;:42;:44::i;:::-;-1:-1:-1;;;;;2461:81:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2461:81:111;;2432:110;;2557:9;2552:156;-1:-1:-1;;;;;2576:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;2572:1;:48;2552:156;;;-1:-1:-1;;;;;2656:35:111;;;;;;:27;:35;;;;;:41;;2695:1;2656:38;:41::i;:::-;2641:9;2651:1;2641:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2641:56:111;;;:12;;;;;;;;;;;:56;2622:3;;2552:156;;;-1:-1:-1;2724:9:111;2321:419;-1:-1:-1;;2321:419:111:o;4287:406::-;4387:38;4417:6;4387:21;:38::i;:::-;4375:8;:50;;4367:104;;;;-1:-1:-1;;;4367:104:111;;12169:2:140;4367:104:111;;;12151:21:140;12208:2;12188:18;;;12181:30;12247:34;12227:18;;;12220:62;-1:-1:-1;;;12298:18:140;;;12291:39;12347:19;;4367:104:111;;;;;;;;;4500:25;4518:6;4500:17;:25::i;:::-;4489:8;:36;4481:92;;;;-1:-1:-1;;;4481:92:111;;12579:2:140;4481:92:111;;;12561:21:140;12618:2;12598:18;;;12591:30;12657:34;12637:18;;;12630:62;-1:-1:-1;;;12708:18:140;;;12701:41;12759:19;;4481:92:111;12377:407:140;4481:92:111;4591:10;-1:-1:-1;;;;;4591:20:111;;;4583:45;;;;-1:-1:-1;;;4583:45:111;;12991:2:140;4583:45:111;;;12973:21:140;13030:2;13010:18;;;13003:30;-1:-1:-1;;;13049:18:140;;;13042:42;13101:18;;4583:45:111;12789:336:140;4583:45:111;-1:-1:-1;;;;;4638:37:111;;;;;;;:29;:37;;;;;:48;4287:406::o;8307:134::-;-1:-1:-1;;;;;8397:37:111;8371:7;8397:37;;;:29;:37;;;;;;;8307:134::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;11409:381:111:-;11505:7;;;11559:195;-1:-1:-1;;;;;11583:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;11579:1;:49;11559:195;;;-1:-1:-1;;;;;11690:36:111;;;;;;:28;:36;;;;;11666:77;;11675:6;;11683:5;;11690:42;;11730:1;11690:39;:42::i;:::-;11734:8;11666;:77::i;:::-;11649:94;;;;:::i;:::-;;-1:-1:-1;11630:3:111;;11559:195;;;-1:-1:-1;11770:13:111;11409:381;-1:-1:-1;;;;11409:381:111:o;26739:151::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26851:32:111::1;-1:-1:-1::0;;;;;;;;;;;26878:4:111::1;26851:10;:32::i;:::-;26739:151:::0;;:::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;1686:554:111:-;-1:-1:-1;;;;;1983:36:111;;1926:27;1983:36;;;:28;:36;;;;;1770:16;;1926:27;1983:45;;:43;:45::i;:::-;-1:-1:-1;;;;;1956:82:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1956:82:111;;1926:112;;2053:9;2048:159;-1:-1:-1;;;;;2072:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;2068:1;:49;2048:159;;;-1:-1:-1;;;;;2154:36:111;;;;;;:28;:36;;;;;:42;;2194:1;2154:39;:42::i;:::-;2138:10;2149:1;2138:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2138:58:111;;;:13;;;;;;;;;;;:58;2119:3;;2048:159;;10462:330;10603:7;10641:144;10669:6;10693:25;10711:6;10693:17;:25::i;:::-;10736:9;10763:8;10641:10;:144::i;:::-;10622:163;10462:330;-1:-1:-1;;;;10462:330:111:o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;11796:192:111:-;11894:7;11920:61;11937:6;11945:25;11963:6;11945:17;:25::i;:::-;11972:8;11920:16;:61::i;26593:140::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26695:31:111::1;-1:-1:-1::0;;;;;;;;;;;26721:4:111::1;26695:9;:31::i;2827:1107::-:0;-1:-1:-1;;;;;3022:35:111;;2997:22;3022:35;;;:27;:35;;;;;2923:16;;2997:22;3022:44;;:42;:44::i;:::-;2997:69;;3123:27;3169:9;3164:258;3188:14;3184:1;:18;3164:258;;;-1:-1:-1;;;;;3242:35:111;;3223:16;3242:35;;;:27;:35;;;;;:41;;3281:1;3242:38;:41::i;:::-;3223:60;;3355:1;3301:51;3335:6;3343:8;3301:33;:51::i;:::-;:55;3297:115;;;3376:21;;;;:::i;:::-;;;;3297:115;-1:-1:-1;3204:3:111;;3164:258;;;;3476:32;3525:19;-1:-1:-1;;;;;3511:34:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3511:34:111;;3476:69;;3555:19;3593:9;3588:307;3612:14;3608:1;:18;3588:307;;;-1:-1:-1;;;;;3666:35:111;;3647:16;3666:35;;;:27;:35;;;;;:41;;3705:1;3666:38;:41::i;:::-;3647:60;;3779:1;3725:51;3759:6;3767:8;3725:33;:51::i;:::-;:55;3721:164;;;3831:8;3800:15;3816:11;3800:28;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3800:39:111;;;:28;;;;;;;;;;;:39;3857:13;;;;:::i;:::-;;;;3721:164;-1:-1:-1;3628:3:111;;3588:307;;;-1:-1:-1;3912:15:111;;2827:1107;-1:-1:-1;;;;;2827:1107:111:o;25966:457::-;2500:21:57;:19;:21::i;:::-;26265:9:111::1;26260:157;26280:20:::0;;::::1;26260:157;;;26321:85;26354:10;26366:9;;26376:1;26366:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26380:10;;26391:1;26380:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26395:7;;26403:1;26395:10;;;;;;;:::i;:::-;;;;;;;26321:32;:85::i;:::-;26302:3;;26260:157;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;25966:457:111;;;;;;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;26982:542:111:-;27081:7;27100:27;27130:31;27154:6;27130:23;:31::i;:::-;27100:61;;27171:26;27200:30;27223:6;27200:22;:30::i;:::-;27171:59;;27240:18;27278:9;27273:218;27297:10;:17;27293:1;:21;27273:218;;;27340:9;27335:146;27359:9;:16;27355:1;:20;27335:146;;;27414:52;27423:6;27431:5;27438:10;27449:1;27438:13;;;;;;;;:::i;:::-;;;;;;;27453:9;27463:1;27453:12;;;;;;;;:::i;:::-;;;;;;;27414:8;:52::i;:::-;27400:66;;;;:::i;:::-;;-1:-1:-1;27377:3:111;;27335:146;;;-1:-1:-1;27316:3:111;;27273:218;;;-1:-1:-1;27507:10:111;26982:542;-1:-1:-1;;;;;26982:542:111:o;27695:176::-;27788:7;27814:50;27830:6;27838:25;27856:6;27838:17;:25::i;9069:182::-;9148:7;9174:25;9192:6;9174:17;:25::i;:::-;:30;:70;;9211:29;9233:6;9211:21;:29::i;:::-;:33;;9243:1;9211:33;:::i;:::-;9174:70;;;9207:1;9167:77;9069:182;-1:-1:-1;;9069:182:111:o;25461:244::-;2500:21:57;:19;:21::i;:::-;25625:73:111::1;25658:10;25670:8;25680:9;25691:6;25625:32;:73::i;:::-;2542:20:57::0;1857:1;3068:7;:21;2888:208;13972:972:111;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;14448:304:111::2;14473:6;14633:42;14668:6;14633:34;:42::i;:::-;14689:9;14712:10;14736:6;14448:11;:304::i;:::-;14874:9;-1:-1:-1::0;;;;;14768:169:111::2;14818:42;14853:6;14818:34;:42::i;:::-;14768:169;::::0;;14897:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;14768:169:111;::::2;::::0;::::2;::::0;13679:18:140;14768:169:111::2;;;;;;;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;8661:180:111;8742:7;8768:25;8786:6;8768:17;:25::i;:::-;:30;:66;;8805:25;8823:6;8805:17;:25::i;10109:254::-;-1:-1:-1;;;;;10282:46:111;;;10256:7;10282:46;;;:38;:46;;;;;;;;:53;;;;;;;;;:64;;;;;;;;;;;:74;;;;;;;;;;;;10109:254::o;514:86:113:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;573:20:113::1;:18;:20::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;514:86:113:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4699:1563:111:-;2500:21:57;:19;:21::i;:::-;4779:10:111::1;4762:14;4804:29:::0;;;:21:::1;:29;::::0;;;;;::::1;;4800:66;;;4842:24;;-1:-1:-1::0;;;4842:24:111::1;;;;;;;;;;;4800:66;-1:-1:-1::0;;;;;4876:29:111;::::1;;::::0;;;:21:::1;:29;::::0;;;;;;;:36;;-1:-1:-1;;4876:36:111::1;4908:4;4876:36:::0;;::::1;::::0;;;4938:29;;;;;;4931:41:::1;;;;:::i;:::-;5094:29;5116:6;5094:21;:29::i;:::-;-1:-1:-1::0;;;;;5054:37:111;::::1;;::::0;;;:29:::1;:37;::::0;;;;:69;;;;5134:1122:::1;-1:-1:-1::0;;;;;5158:35:111;::::1;;::::0;;;:27:::1;:35;::::0;;;;:44:::1;::::0;:42:::1;:44::i;:::-;5154:1;:48;5134:1122;;;-1:-1:-1::0;;;;;5242:35:111;::::1;5223:16;5242:35:::0;;;:27:::1;:35;::::0;;;;:41:::1;::::0;5281:1;5242:38:::1;:41::i;:::-;5223:60;;5303:9;5298:952;-1:-1:-1::0;;;;;5322:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;:45:::1;::::0;:43:::1;:45::i;:::-;5318:1;:49;5298:952;;;-1:-1:-1::0;;;;;5412:36:111;::::1;5392:17;5412:36:::0;;;:28:::1;:36;::::0;;;;:42:::1;::::0;5452:1;5412:39:::1;:42::i;:::-;5392:62;;5531:21;5555:138;5585:6;5613:1;5636:9;5667:8;5555;:138::i;:::-;5531:162;;5907:1;5879:25;5897:6;5879:17;:25::i;:::-;:29;5875:365;;;5960:1;5932:25;5950:6;5932:17;:25::i;:::-;:29;5928:298;;;5985:222;6020:6;6052:25;6070:6;6052:17;:25::i;:::-;6103:9;6138:8;6172:13;5985:9;:222::i;:::-;-1:-1:-1::0;;5369:3:111::1;;5298:952;;;-1:-1:-1::0;;5204:3:111::1;;5134:1122;;;;4752:1510;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;4699:1563:111:o;9342:250::-;-1:-1:-1;;;;;9513:44:111;;;9487:7;9513:44;;;:36;:44;;;;;;;;:51;;;;;;;;;:62;;;;;;;;;;;:72;;;;;;;;;;;;9342:250::o;11173:230::-;11295:7;11333:63;11351:6;11359:25;11377:6;11359:17;:25::i;:::-;11386:9;11333:17;:63::i;9689:326::-;9828:7;9866:142;9892:6;9916:25;9934:6;9916:17;:25::i;:::-;9959:9;9986:8;9866;:142::i;19744:1588::-;2500:21:57;:19;:21::i;:::-;19955:9:111::1;19950:1376;19970:20:::0;;::::1;19950:1376;;;20238:20;20261:276;20287:180;20317:10;20349:31;20367:9;;20377:1;20367:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20349:31::-;20402:10;;20413:1;20402:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20437:9;;20447:1;20437:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20287:180::-;20485:38;20494:7;;20502:1;20494:10;;;;;;;:::i;:::-;;;;;;;20506:13;;20520:1;20506:16;;;;;;;:::i;:::-;;;;;;;20485:8;:38::i;:::-;20261:8;:276::i;:::-;20238:299;;20551:238;20601:4;20702:9;;20712:1;20702:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20732:10;;20743:1;20732:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20763:12;20551:24;:238::i;:::-;20948:189;20977:10;21005:29;21023:10;21005:17;:29::i;:::-;21052:10;;21063:1;21052:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21083:9;;21093:1;21083:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21113:7;;21121:1;21113:10;;;;;;;:::i;:::-;;;;;;;20948:11;:189::i;:::-;21152:163;21183:10;21211:29;21229:10;21211:17;:29::i;:::-;21258:10;;21269:1;21258:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21289:9;;21299:1;21289:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21152:13;:163::i;:::-;-1:-1:-1::0;19992:3:111::1;;19950:1376;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;19744:1588:111;;;;;;;;:::o;17307:108::-;17351:57;17366:10;17378:29;17396:10;17378:17;:29::i;:::-;17351:14;:57::i;12036:1885::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;12241:35:111;::::2;;::::0;;;:27:::2;:35;::::0;;;;:51:::2;::::0;12281:10:::2;12241:39;:51::i;:::-;-1:-1:-1::0;12666:21:111::2;12690:5:::0;;:30:::2;::::0;-1:-1:-1;;;12690:30:111;;12714:4:::2;12690:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;12690:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;12690:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13009:57;::::0;-1:-1:-1;;;13009:57:111;;13032:10:::2;13009:57;::::0;::::2;14756:51:140::0;13052:4:111::2;14823:18:140::0;;;14816:60;14892:18;;;14885:34;;;12666:54:111;;-1:-1:-1;;;;;;13009:22:111;::::2;::::0;::::2;::::0;14729:18:140;;13009:57:111::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13199:22:111::2;13215:6:::0;13199:13;:22:::2;:::i;:::-;13165:5;::::0;:30:::2;::::0;-1:-1:-1;;;13165:30:111;;13189:4:::2;13165:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;13165:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;13165:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;13161:114;;13242:33;;-1:-1:-1::0;;;13242:33:111::2;;;;;;;;;;;13161:114;13352:311;13375:6;13535:42;13570:6;13535:34;:42::i;:::-;13599:9;13623:10;13647:6;13352:9;:311::i;:::-;13850:9;-1:-1:-1::0;;;;;13738:176:111::2;13786:42;13821:6;13786:34;:42::i;:::-;13738:176;::::0;;13874:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;13738:176:111;::::2;::::0;::::2;::::0;13679:18:140;13738:176:111::2;;;;;;;12178:1743;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;1051:125:111;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;1115:30:111::1;:28;:30::i;:::-;1155:5;:14:::0;;-1:-1:-1;;;;;;1155:14:111::1;-1:-1:-1::0;;;;;1155:14:111;::::1;;::::0;;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;4092:1081;;;;;1051:125:111;:::o;1245:359::-;2500:21:57;:19;:21::i;:::-;1394:10:111::1;1377:14;1414:29:::0;;;:21:::1;:29;::::0;;;;:45;;;1470:128:::1;1490:21:::0;;::::1;1470:128;;;1532:55;1573:10;;1584:1;1573:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1532:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;;:40:::1;:55::i;:::-;-1:-1:-1::0;1513:3:111::1;;1470:128;;;;1367:237;2542:20:57::0;1857:1;3068:7;:21;2888:208;5662:138:19;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;8002:226:111:-:0;-1:-1:-1;;;;;8093:29:111;;8070:7;8093:29;;;:21;:29;;;;;;:34;;8089:68;;8136:21;;-1:-1:-1;;;8136:21:111;;;;;;;;;;;8089:68;-1:-1:-1;;;;;8192:29:111;;;;;;:21;:29;;;;;;8174:47;;:15;:47;:::i;9090:115:67:-;9153:7;9179:19;9187:3;4556:18;;4474:107;9547:156;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2575:307:57;1899:1;2702:7;;:18;2698:86;;2743:30;;-1:-1:-1;;;2743:30:57;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;24467:315:111:-;24625:4;24603:10;:27;24595:59;;;;-1:-1:-1;;;24595:59:111;;15636:2:140;24595:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24595:59:111;15434:343:140;24595:59:111;24680:5;;-1:-1:-1;;;;;24672:27:111;;;24680:5;;24672:27;24664:59;;;;-1:-1:-1;;;24664:59:111;;15984:2:140;24664:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;24664:59:111;15782:343:140;24664:59:111;24733:5;;:42;;-1:-1:-1;;;24733:42:111;;-1:-1:-1;;;;;14774:32:140;;;24733:42:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;24733:5:111;;;;:18;;14729::140;;24733:42:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4603:312:21:-;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;965:103:113;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;11791:32:140;;6518:60:21;;;11773:51:140;11746:18;;6518:60:21;11611:219:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1434:25:140;;;1407:18;;6317:34:21;1288:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;6945:261:111;-1:-1:-1;;;;;7115:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;;;:84;;7193:6;;7115:46;:84;;7193:6;;7115:84;:::i;:::-;;;;-1:-1:-1;;;;;;;6945:261:111:o;606:103:113:-;6931:20:20;:18;:20::i;:::-;672:30:113::1;:28;:30::i;6268:331:111:-:0;-1:-1:-1;;;;;6436:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6512:6;;6436:44;:82;;6512:6;;6436:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6528:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6586:6;;6528:36;:64;;6586:6;;6528:64;:::i;3371:111:64:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;21690:1458:111;21868:4;-1:-1:-1;;;;;21852:21:111;;;21848:1294;;21953:5;;-1:-1:-1;;;;;21945:27:111;;;21953:5;;21945:27;21941:413;;22068:67;22101:4;22107:8;22117:9;22128:6;22068:32;:67::i;:::-;21848:1294;;21941:413;22268:71;22305:4;22311:8;22321:9;22332:6;22268:36;:71::i;21848:1294::-;22752:5;;-1:-1:-1;;;;;22744:27:111;;;22752:5;;22744:27;22740:392;;22863:67;22896:4;22902:8;22912:9;22923:6;22863:32;:67::i;22740:392::-;23046:71;23083:4;23089:8;23099:9;23110:6;23046:36;:71::i;17722:796::-;17967:5;17945:19;18006:108;18028:6;17967:5;18073:9;18096:8;18006;:108::i;:::-;17982:132;;18223:6;18207:13;:22;18203:309;;;18245:163;18275:6;18299:11;18328:9;18355:8;18381:13;18245:12;:163::i;:::-;18203:309;;;18439:62;18452:6;18460:11;18473:9;18484:8;18494:6;18439:12;:62::i;:::-;17882:636;;17722:796;;;;;:::o;18850:888::-;19057:21;19081:102;19103:6;19123:5;19142:9;19165:8;19081;:102::i;:::-;19057:126;-1:-1:-1;19193:19:111;19215:9;:5;19223:1;19215:9;:::i;:::-;19193:31;;19234:23;19260:110;19284:6;19304:11;19329:9;19352:8;19260:10;:110::i;:::-;19234:136;;19403:13;19385:15;:31;19381:351;;;-1:-1:-1;;;;;7652:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;:83;;;19559:162;7482:260;16491:810;16720:9;16715:423;-1:-1:-1;;;;;16739:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;16735:1;:48;16715:423;;;-1:-1:-1;;;;;16823:35:111;;16804:16;16823:35;;;:27;:35;;;;;:41;;16862:1;16823:38;:41::i;:::-;16804:60;;16884:9;16879:249;-1:-1:-1;;;;;16903:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;16899:1;:49;16879:249;;;-1:-1:-1;;;;;16993:36:111;;16973:17;16993:36;;;:28;:36;;;;;:42;;17033:1;16993:39;:42::i;:::-;16973:62;;17054:59;17072:6;17080:11;17093:9;17104:8;17054:17;:59::i;:::-;-1:-1:-1;16950:3:111;;16879:249;;;-1:-1:-1;;16785:3:111;;16715:423;;;-1:-1:-1;17227:15:111;:11;17241:1;17227:15;:::i;:::-;-1:-1:-1;;;;;17187:37:111;;;;;;:29;:37;;;;;;;:55;;;;17258:36;;;;;;17282:11;1434:25:140;;1422:2;1407:18;;1288:177;17258:36:111;;;;;;;;16491:810;;:::o;8289:150:67:-;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:67;;8382:4;:50::i;715:125:113:-;6931:20:20;:18;:20::i;:::-;791:42:113::1;2362:4:19;822:10:113;791;:42::i;4923:118:67:-:0;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;13724:32:140;;4514:47:19;;;13706:51:140;13773:18;;;13766:34;;;13679:18;;4514:47:19;13532:274:140;2264:344:40;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;23282:313:111;-1:-1:-1;;;;;23418:21:111;;23434:4;23418:21;23410:67;;;;-1:-1:-1;;;23410:67:111;;16800:2:140;23410:67:111;;;16782:21:140;16839:2;16819:18;;;16812:30;16878:34;16858:18;;;16851:62;-1:-1:-1;;;16929:18:140;;;16922:31;16970:19;;23410:67:111;16598:397:140;23410:67:111;23503:5;;-1:-1:-1;;;;;23495:27:111;;;23503:5;;23495:27;23487:59;;;;-1:-1:-1;;;23487:59:111;;15984:2:140;23487:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;23487:59:111;15782:343:140;23487:59:111;23556:5;;:32;;-1:-1:-1;;;23556:32:111;;-1:-1:-1;;;;;13724:32:140;;;23556::111;;;13706:51:140;13773:18;;;13766:34;;;23556:5:111;;;;:14;;13679:18:140;;23556:32:111;13532:274:140;23664:394:111;-1:-1:-1;;;;;23804:21:111;;23820:4;23804:21;23796:67;;;;-1:-1:-1;;;23796:67:111;;17202:2:140;23796:67:111;;;17184:21:140;17241:2;17221:18;;;17214:30;17280:34;17260:18;;;17253:62;-1:-1:-1;;;17331:18:140;;;17324:31;17372:19;;23796:67:111;17000:397:140;23796:67:111;23889:5;;-1:-1:-1;;;;;23881:27:111;;;23889:5;;23881:27;23873:64;;;;-1:-1:-1;;;23873:64:111;;17604:2:140;23873:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;23873:64:111;17402:348:140;23873:64:111;23947:5;;:32;;-1:-1:-1;;;23947:32:111;;-1:-1:-1;;;;;13724:32:140;;;23947::111;;;13706:51:140;13773:18;;;13766:34;;;23947:5:111;;;;:13;;13679:18:140;;23947:32:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23989:62:111;;-1:-1:-1;;;23989:62:111;;-1:-1:-1;;;;;13724:32:140;;;23989:62:111;;;13706:51:140;13773:18;;;13766:34;;;23989:44:111;;;;;13679:18:140;;23989:62:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24859:354;25021:4;24999:10;:27;24991:59;;;;-1:-1:-1;;;24991:59:111;;15636:2:140;24991:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24991:59:111;15434:343:140;24991:59:111;25076:5;;-1:-1:-1;;;;;25068:27:111;;;25076:5;;25068:27;25060:64;;;;-1:-1:-1;;;25060:64:111;;17604:2:140;25060:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;25060:64:111;17402:348:140;25060:64:111;25134:72;;-1:-1:-1;;;25134:72:111;;-1:-1:-1;;;;;14774:32:140;;;25134:72:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;25134:48:111;;;;;14729:18:140;;25134:72:111;14554:371:140;6605:334:111;-1:-1:-1;;;;;6776:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6852:6;;6776:44;:82;;6852:6;;6776:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6868:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6926:6;;6868:36;:64;;6926:6;;6868:64;:::i;15011:1474::-;15265:19;15287:108;15309:6;15329:11;15354:9;15377:8;15287;:108::i;:::-;15265:130;-1:-1:-1;15405:21:111;15429:114;15453:6;15473:15;:11;15487:1;15473:15;:::i;:::-;15502:9;15525:8;15429:10;:114::i;:::-;15405:138;;15573:11;15557:13;:27;15553:85;;;-1:-1:-1;15616:11:111;15553:85;15647:17;15667:27;15681:13;15667:11;:27;:::i;:::-;15647:47;-1:-1:-1;15705:66:111;15715:6;15723:15;:11;15737:1;15723:15;:::i;:::-;15740:9;15751:8;15761:9;15705;:66::i;:::-;16181:17;;16177:131;;16214:83;16255:4;16262:8;16272:9;16283:13;16214:32;:83::i;:::-;16407:9;-1:-1:-1;;;;;16323:155:111;16382:11;16360:8;-1:-1:-1;;;;;16323:155:111;;16430:11;16455:13;16323:155;;;;;;18062:25:140;;;18118:2;18103:18;;18096:34;18050:2;18035:18;;17888:248;16323:155:111;;;;;;;;15159:1326;;;15011:1474;;;;:::o;2241:406:67:-;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:67;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:67;2618:12;;1671:281:40;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;11791:32:140;;1805:47:40;;;11773:51:140;11746:18;;1805:47:40;11611:219:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;11791:32:140;;4933:24:53;;;11773:51:140;11746:18;;4933:24:53;11611:219:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:140;;562:42;;552:70;;618:1;615;608:12;633:650;719:6;727;735;743;796:3;784:9;775:7;771:23;767:33;764:53;;;813:1;810;803:12;764:53;852:9;839:23;871:31;896:5;871:31;:::i;:::-;921:5;-1:-1:-1;999:2:140;984:18;;971:32;;-1:-1:-1;1081:2:140;1066:18;;1053:32;1094:33;1053:32;1094:33;:::i;:::-;1146:7;-1:-1:-1;1205:2:140;1190:18;;1177:32;1218:33;1177:32;1218:33;:::i;:::-;633:650;;;;-1:-1:-1;633:650:140;;-1:-1:-1;;633:650:140:o;1470:508::-;1547:6;1555;1563;1616:2;1604:9;1595:7;1591:23;1587:32;1584:52;;;1632:1;1629;1622:12;1584:52;1671:9;1658:23;1690:31;1715:5;1690:31;:::i;:::-;1740:5;-1:-1:-1;1818:2:140;1803:18;;1790:32;;-1:-1:-1;1900:2:140;1885:18;;1872:32;1913:33;1872:32;1913:33;:::i;:::-;1965:7;1955:17;;;1470:508;;;;;:::o;1983:247::-;2042:6;2095:2;2083:9;2074:7;2070:23;2066:32;2063:52;;;2111:1;2108;2101:12;2063:52;2150:9;2137:23;2169:31;2194:5;2169:31;:::i;2235:637::-;2425:2;2437:21;;;2507:13;;2410:18;;;2529:22;;;2377:4;;2608:15;;;2582:2;2567:18;;;2377:4;2651:195;2665:6;2662:1;2659:13;2651:195;;;2730:13;;-1:-1:-1;;;;;2726:39:140;2714:52;;2795:2;2821:15;;;;2786:12;;;;2762:1;2680:9;2651:195;;2877:367;2945:6;2953;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;3061:9;3048:23;3080:31;3105:5;3080:31;:::i;:::-;3130:5;3208:2;3193:18;;;;3180:32;;-1:-1:-1;;;2877:367:140:o;3249:226::-;3308:6;3361:2;3349:9;3340:7;3336:23;3332:32;3329:52;;;3377:1;3374;3367:12;3329:52;-1:-1:-1;3422:23:140;;3249:226;-1:-1:-1;3249:226:140:o;3662:367::-;3730:6;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3852:23;;;-1:-1:-1;3951:2:140;3936:18;;3923:32;3964:33;3923:32;3964:33;:::i;:::-;4016:7;4006:17;;;3662:367;;;;;:::o;4034:529::-;4111:6;4119;4127;4180:2;4168:9;4159:7;4155:23;4151:32;4148:52;;;4196:1;4193;4186:12;4148:52;4235:9;4222:23;4254:31;4279:5;4254:31;:::i;:::-;4304:5;-1:-1:-1;4361:2:140;4346:18;;4333:32;4374:33;4333:32;4374:33;:::i;:::-;4426:7;-1:-1:-1;4485:2:140;4470:18;;4457:32;4498:33;4457:32;4498:33;:::i;4568:388::-;4636:6;4644;4697:2;4685:9;4676:7;4672:23;4668:32;4665:52;;;4713:1;4710;4703:12;4665:52;4752:9;4739:23;4771:31;4796:5;4771:31;:::i;:::-;4821:5;-1:-1:-1;4878:2:140;4863:18;;4850:32;4891:33;4850:32;4891:33;:::i;4961:367::-;5024:8;5034:6;5088:3;5081:4;5073:6;5069:17;5065:27;5055:55;;5106:1;5103;5096:12;5055:55;-1:-1:-1;5129:20:140;;-1:-1:-1;;;;;5161:30:140;;5158:50;;;5204:1;5201;5194:12;5158:50;5241:4;5233:6;5229:17;5217:29;;5301:3;5294:4;5284:6;5281:1;5277:14;5269:6;5265:27;5261:38;5258:47;5255:67;;;5318:1;5315;5308:12;5255:67;4961:367;;;;;:::o;5333:1099::-;5491:6;5499;5507;5515;5523;5531;5584:2;5572:9;5563:7;5559:23;5555:32;5552:52;;;5600:1;5597;5590:12;5552:52;5640:9;5627:23;-1:-1:-1;;;;;5665:6:140;5662:30;5659:50;;;5705:1;5702;5695:12;5659:50;5744:70;5806:7;5797:6;5786:9;5782:22;5744:70;:::i;:::-;5833:8;;-1:-1:-1;5718:96:140;-1:-1:-1;;5921:2:140;5906:18;;5893:32;-1:-1:-1;;;;;5937:32:140;;5934:52;;;5982:1;5979;5972:12;5934:52;6021:72;6085:7;6074:8;6063:9;6059:24;6021:72;:::i;:::-;6112:8;;-1:-1:-1;5995:98:140;-1:-1:-1;;6200:2:140;6185:18;;6172:32;-1:-1:-1;;;;;6216:32:140;;6213:52;;;6261:1;6258;6251:12;6213:52;6300:72;6364:7;6353:8;6342:9;6338:24;6300:72;:::i;:::-;5333:1099;;;;-1:-1:-1;5333:1099:140;;-1:-1:-1;5333:1099:140;;6391:8;;5333:1099;-1:-1:-1;;;5333:1099:140:o;6437:127::-;6498:10;6493:3;6489:20;6486:1;6479:31;6529:4;6526:1;6519:15;6553:4;6550:1;6543:15;6569:1079;6646:6;6654;6707:2;6695:9;6686:7;6682:23;6678:32;6675:52;;;6723:1;6720;6713:12;6675:52;6762:9;6749:23;6781:31;6806:5;6781:31;:::i;:::-;6831:5;-1:-1:-1;6887:2:140;6872:18;;6859:32;-1:-1:-1;;;;;6903:30:140;;6900:50;;;6946:1;6943;6936:12;6900:50;6969:22;;7022:4;7014:13;;7010:27;-1:-1:-1;7000:55:140;;7051:1;7048;7041:12;7000:55;7091:2;7078:16;-1:-1:-1;;;;;7109:6:140;7106:30;7103:56;;;7139:18;;:::i;:::-;7188:2;7182:9;7280:2;7242:17;;-1:-1:-1;;7238:31:140;;;7271:2;7234:40;7230:54;7218:67;;-1:-1:-1;;;;;7300:34:140;;7336:22;;;7297:62;7294:88;;;7362:18;;:::i;:::-;7398:2;7391:22;7422;;;7463:15;;;7480:2;7459:24;7456:37;-1:-1:-1;7453:57:140;;;7506:1;7503;7496:12;7453:57;7562:6;7557:2;7553;7549:11;7544:2;7536:6;7532:15;7519:50;7615:1;7610:2;7601:6;7593;7589:19;7585:28;7578:39;7636:6;7626:16;;;;;6569:1079;;;;;:::o;7653:508::-;7730:6;7738;7746;7799:2;7787:9;7778:7;7774:23;7770:32;7767:52;;;7815:1;7812;7805:12;7767:52;7854:9;7841:23;7873:31;7898:5;7873:31;:::i;:::-;7923:5;-1:-1:-1;7980:2:140;7965:18;;7952:32;7993:33;7952:32;7993:33;:::i;:::-;7653:508;;8045:7;;-1:-1:-1;;;8125:2:140;8110:18;;;;8097:32;;7653:508::o;8166:1431::-;8360:6;8368;8376;8384;8392;8400;8408;8416;8469:3;8457:9;8448:7;8444:23;8440:33;8437:53;;;8486:1;8483;8476:12;8437:53;8526:9;8513:23;-1:-1:-1;;;;;8551:6:140;8548:30;8545:50;;;8591:1;8588;8581:12;8545:50;8630:70;8692:7;8683:6;8672:9;8668:22;8630:70;:::i;:::-;8719:8;;-1:-1:-1;8604:96:140;-1:-1:-1;;8807:2:140;8792:18;;8779:32;-1:-1:-1;;;;;8823:32:140;;8820:52;;;8868:1;8865;8858:12;8820:52;8907:72;8971:7;8960:8;8949:9;8945:24;8907:72;:::i;:::-;8998:8;;-1:-1:-1;8881:98:140;-1:-1:-1;;9086:2:140;9071:18;;9058:32;-1:-1:-1;;;;;9102:32:140;;9099:52;;;9147:1;9144;9137:12;9099:52;9186:72;9250:7;9239:8;9228:9;9224:24;9186:72;:::i;:::-;9277:8;;-1:-1:-1;9160:98:140;-1:-1:-1;;9365:2:140;9350:18;;9337:32;-1:-1:-1;;;;;9381:32:140;;9378:52;;;9426:1;9423;9416:12;9378:52;9465:72;9529:7;9518:8;9507:9;9503:24;9465:72;:::i;:::-;8166:1431;;;;-1:-1:-1;8166:1431:140;;-1:-1:-1;8166:1431:140;;;;;;9556:8;-1:-1:-1;;;8166:1431:140:o;9602:250::-;9687:1;9697:113;9711:6;9708:1;9705:13;9697:113;;;9787:11;;;9781:18;9768:11;;;9761:39;9733:2;9726:10;9697:113;;;-1:-1:-1;;9844:1:140;9826:16;;9819:27;9602:250::o;9857:396::-;10006:2;9995:9;9988:21;9969:4;10038:6;10032:13;10081:6;10076:2;10065:9;10061:18;10054:34;10097:79;10169:6;10164:2;10153:9;10149:18;10144:2;10136:6;10132:15;10097:79;:::i;:::-;10237:2;10216:15;-1:-1:-1;;10212:29:140;10197:45;;;;10244:2;10193:54;;9857:396;-1:-1:-1;;9857:396:140:o;11055:551::-;11150:6;11158;11166;11219:2;11207:9;11198:7;11194:23;11190:32;11187:52;;;11235:1;11232;11225:12;11187:52;11280:23;;;-1:-1:-1;11378:2:140;11363:18;;11350:32;-1:-1:-1;;;;;11394:30:140;;11391:50;;;11437:1;11434;11427:12;11391:50;11476:70;11538:7;11529:6;11518:9;11514:22;11476:70;:::i;:::-;11055:551;;11565:8;;-1:-1:-1;11450:96:140;;-1:-1:-1;;;;11055:551:140:o;11835:127::-;11896:10;11891:3;11887:20;11884:1;11877:31;11927:4;11924:1;11917:15;11951:4;11948:1;11941:15;13130:127;13191:10;13186:3;13182:20;13179:1;13172:31;13222:4;13219:1;13212:15;13246:4;13243:1;13236:15;13262:125;13327:9;;;13348:10;;;13345:36;;;13361:18;;:::i;13392:135::-;13431:3;13452:17;;;13449:43;;13472:18;;:::i;:::-;-1:-1:-1;13519:1:140;13508:13;;13392:135::o;14025:127::-;14086:10;14081:3;14077:20;14074:1;14067:31;14117:4;14114:1;14107:15;14141:4;14138:1;14131:15;14365:184;14435:6;14488:2;14476:9;14467:7;14463:23;14459:32;14456:52;;;14504:1;14501;14494:12;14456:52;-1:-1:-1;14527:16:140;;14365:184;-1:-1:-1;14365:184:140:o;14930:277::-;14997:6;15050:2;15038:9;15029:7;15025:23;15021:32;15018:52;;;15066:1;15063;15056:12;15018:52;15098:9;15092:16;15151:5;15144:13;15137:21;15130:5;15127:32;15117:60;;15173:1;15170;15163:12;15212:217;15252:1;15278;15268:132;;15322:10;15317:3;15313:20;15310:1;15303:31;15357:4;15354:1;15347:15;15385:4;15382:1;15375:15;15268:132;-1:-1:-1;15414:9:140;;15212:217::o;17755:128::-;17822:9;;;17843:11;;;17840:37;;;17857:18;;:::i;18141:287::-;18270:3;18308:6;18302:13;18324:66;18383:6;18378:3;18371:4;18363:6;18359:17;18324:66;:::i;:::-;18406:16;;;;;18141:287;-1:-1:-1;;18141:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":7976,"length":32},{"start":8017,"length":32},{"start":8341,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WHITELIST_ROLE()":"7a997ab7","acceptGenesisCeremony()":"92a2ebf3","computeAllStake(address,uint256)":"55bdbe4c","computeAllStakeForAcceptingEpoch(address)":"574663a9","currentAcceptingEpochByDomain(address)":"b1de97f7","domainGenesisAccepted(address)":"d1ba90ff","epochDurationByDomain(address)":"3bccf635","getAcceptingEpoch(address)":"22fceb75","getAttesterStake(address,uint256,address)":"24fdfddf","getAttesterStakeForAcceptingEpoch(address,address)":"3debeadc","getCustodianStake(address,uint256,address)":"0ce52af5","getCustodianStakeForAcceptingEpoch(address,address)":"9db92f68","getEpochByL1BlockTime(address)":"d980b40d","getEpochDuration(address)":"5c534359","getNextAcceptingEpochWithException(address)":"771fcfc4","getNextPresentEpochWithException(address)":"57dd6a94","getRegisteredAttesters(address)":"1789aeb4","getRegisteredCustodians(address)":"341d5ef5","getRoleAdmin(bytes32)":"248a9ca3","getStake(address,uint256,address,address)":"93dfb85c","getStakeForAcceptingEpoch(address,address,address)":"a78d1fef","getStakedAttestersForAcceptingEpoch(address)":"4234a479","getUnstake(address,uint256,address,address)":"7d93768b","getUnstakeForAcceptingEpoch(address,address,address)":"34eada3a","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address)":"c4d66de8","proxiableUUID()":"52d1902d","registerDomain(uint256,address[])":"d37304f8","removeAddressFromWhitelist(address)":"286dd3f5","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardArray(address[],uint256[],address[])":"4e76a139","rewardFromDomain(address,uint256,address)":"5e00bf46","rollOverEpoch()":"a887b71c","setAcceptingEpoch(address,uint256)":"1dc8b949","slash(address[],address[],uint256[],uint256[])":"a885c975","stake(address,address,uint256)":"bf6eac2f","stakesByDomainEpochCustodian(address,uint256,address)":"86af70d1","stakesByDomainEpochCustodianAttester(address,uint256,address,address)":"0c8f522f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","unstake(address,address,uint256)":"60829f8a","unstakesByDomainEpochCustodianAttester(address,uint256,address,address)":"e6e3fb3a","upgradeToAndCall(address,bytes)":"4f1ef286","whitelistAddress(address)":"41566585"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodianTransferAmountMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EpochDurationNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisAlreadyAccepted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakeExceedsGenesisStake\",\"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\":\"attester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstake\",\"type\":\"uint256\"}],\"name\":\"AttesterEpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"EpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"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\":[],\"name\":\"WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"computeAllStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"computeAllStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"currentAcceptingEpochByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentAcceptingEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"domainGenesisAccepted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"epochDurationByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochByL1BlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextPresentEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredAttesters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredCustodians\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"registerDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"removeAddressFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"rewardArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"rewardFromDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollOverEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"}],\"name\":\"slash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodian\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"unstakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"whitelistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"computeAllStakeForAcceptingEpoch(address)\":{\"params\":{\"domain\":\"The domain to compute total stake for\"}},\"getCustodianStake(address,uint256,address)\":{\"details\":\"gets the total stake for a given epoch for a given custodian\"},\"getCustodianStakeForAcceptingEpoch(address,address)\":{\"details\":\"gets the total stake for the accepting epoch for a given custodian\"},\"getNextAcceptingEpochWithException(address)\":{\"details\":\"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getNextPresentEpochWithException(address)\":{\"details\":\"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getStake(address,uint256,address,address)\":{\"details\":\"gets the stake for a given epoch for a given {attester,custodian} tuple\"},\"getStakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the stake for the accepting epoch for a given {attester,custodian} tuple\"},\"getUnstake(address,uint256,address,address)\":{\"details\":\"gets the unstake for a given epoch for a given {attester,custodian} tuple\"},\"getUnstakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the unstake for the accepting epoch for a given {attester,custodian} tuple\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"rewardArray(address[],uint256[],address[])\":{\"params\":{\"amounts\":\"The amounts to reward\",\"attesters\":\"The attesters to reward\",\"custodians\":\"The custodians of the token from which to reward the attesters \"}},\"rewardFromDomain(address,uint256,address)\":{\"params\":{\"amount\":\"The amount to reward\",\"attester\":\"The attester to reward\",\"custodian\":\"The custodian of the token from which to reward the attester, here it is the domain\"}},\"setAcceptingEpoch(address,uint256)\":{\"params\":{\"domain\":\"The domain address\",\"newEpoch\":\"The new accepting epoch value\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"EpochDurationNotSet()\":[{\"notice\":\"Error thrown when trying to get epoch but duration not set\"}]},\"kind\":\"user\",\"methods\":{\"computeAllStake(address,uint256)\":{\"notice\":\"Computes total stake across all custodians and attesters for an epoch\"},\"computeAllStakeForAcceptingEpoch(address)\":{\"notice\":\"Computes total stake across all custodians and attesters for the current accepting epoch\"},\"getEpochDuration(address)\":{\"notice\":\"Gets the epoch duration for the given domain\"},\"getNextAcceptingEpochWithException(address)\":{\"notice\":\"Gets the next accepting epoch number\"},\"getNextPresentEpochWithException(address)\":{\"notice\":\"Gets the next present epoch number\"},\"getRegisteredAttesters(address)\":{\"notice\":\"Gets all attesters who are registered for the given domain\"},\"getRegisteredCustodians(address)\":{\"notice\":\"Gets all custodians who are registered for the given domain\"},\"getStakedAttestersForAcceptingEpoch(address)\":{\"notice\":\"Gets all attesters who have stake in the current accepting epoch\"},\"registerDomain(uint256,address[])\":{\"notice\":\"Registers a domain and sets the epoch duration\"},\"rewardArray(address[],uint256[],address[])\":{\"notice\":\"An array of custodians reward an array of attesters\"},\"rewardFromDomain(address,uint256,address)\":{\"notice\":\"Domain rewards an attester\"},\"setAcceptingEpoch(address,uint256)\":{\"notice\":\"Sets the accepting epoch for a given domain\"},\"stake(address,address,uint256)\":{\"notice\":\"Stakes for the next epoch\"},\"whitelistAddress(address)\":{\"notice\":\"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MovementStaking.sol\":\"MovementStaking\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CustodianTransferAmountMismatch"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EpochDurationNotSet"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisAlreadyAccepted"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"StakeExceedsGenesisStake"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstake","type":"uint256","indexed":false}],"type":"event","name":"AttesterEpochRolledOver","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterStaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterUnstaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false}],"type":"event","name":"EpochRolledOver","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"computeAllStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"computeAllStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"currentAcceptingEpochByDomain","outputs":[{"internalType":"uint256","name":"currentAcceptingEpoch","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"domainGenesisAccepted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"epochDurationByDomain","outputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochByL1BlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextPresentEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredAttesters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredCustodians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"registerDomain"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAddressFromWhitelist"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"rewardArray"},{"inputs":[{"internalType":"address","name":"attester","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"rewardFromDomain"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"rollOverEpoch"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"address[]","name":"custodians","type":"address[]"},{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"refundAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"slash"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"contract IERC20","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"stake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodian","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unstake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"unstakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelistAddress"}],"devdoc":{"kind":"dev","methods":{"computeAllStakeForAcceptingEpoch(address)":{"params":{"domain":"The domain to compute total stake for"}},"getCustodianStake(address,uint256,address)":{"details":"gets the total stake for a given epoch for a given custodian"},"getCustodianStakeForAcceptingEpoch(address,address)":{"details":"gets the total stake for the accepting epoch for a given custodian"},"getNextAcceptingEpochWithException(address)":{"details":"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getNextPresentEpochWithException(address)":{"details":"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getStake(address,uint256,address,address)":{"details":"gets the stake for a given epoch for a given {attester,custodian} tuple"},"getStakeForAcceptingEpoch(address,address,address)":{"details":"gets the stake for the accepting epoch for a given {attester,custodian} tuple"},"getUnstake(address,uint256,address,address)":{"details":"gets the unstake for a given epoch for a given {attester,custodian} tuple"},"getUnstakeForAcceptingEpoch(address,address,address)":{"details":"gets the unstake for the accepting epoch for a given {attester,custodian} tuple"},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"rewardArray(address[],uint256[],address[])":{"params":{"amounts":"The amounts to reward","attesters":"The attesters to reward","custodians":"The custodians of the token from which to reward the attesters "}},"rewardFromDomain(address,uint256,address)":{"params":{"amount":"The amount to reward","attester":"The attester to reward","custodian":"The custodian of the token from which to reward the attester, here it is the domain"}},"setAcceptingEpoch(address,uint256)":{"params":{"domain":"The domain address","newEpoch":"The new accepting epoch value"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"computeAllStake(address,uint256)":{"notice":"Computes total stake across all custodians and attesters for an epoch"},"computeAllStakeForAcceptingEpoch(address)":{"notice":"Computes total stake across all custodians and attesters for the current accepting epoch"},"getEpochDuration(address)":{"notice":"Gets the epoch duration for the given domain"},"getNextAcceptingEpochWithException(address)":{"notice":"Gets the next accepting epoch number"},"getNextPresentEpochWithException(address)":{"notice":"Gets the next present epoch number"},"getRegisteredAttesters(address)":{"notice":"Gets all attesters who are registered for the given domain"},"getRegisteredCustodians(address)":{"notice":"Gets all custodians who are registered for the given domain"},"getStakedAttestersForAcceptingEpoch(address)":{"notice":"Gets all attesters who have stake in the current accepting epoch"},"registerDomain(uint256,address[])":{"notice":"Registers a domain and sets the epoch duration"},"rewardArray(address[],uint256[],address[])":{"notice":"An array of custodians reward an array of attesters"},"rewardFromDomain(address,uint256,address)":{"notice":"Domain rewards an attester"},"setAcceptingEpoch(address,uint256)":{"notice":"Sets the accepting epoch for a given domain"},"stake(address,address,uint256)":{"notice":"Stakes for the next epoch"},"whitelistAddress(address)":{"notice":"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/staking/MovementStaking.sol":"MovementStaking"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file +<<<<<<< HEAD +{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","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":"WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeAllStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentAcceptingEpochByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"currentAcceptingEpoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"domainGenesisAccepted","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochDurationByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochByL1BlockTime","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextPresentEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredAttesters","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredCustodians","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getUnstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnstakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerDomain","inputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAddressFromWhitelist","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardArray","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardFromDomain","inputs":[{"name":"attester","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollOverEpoch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"custodians","type":"address[]","internalType":"address[]"},{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"refundAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakesByDomainEpochCustodian","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"unstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unstakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"whitelistAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AttesterEpochRolledOver","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterStaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterUnstaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EpochRolledOver","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CustodianTransferAmountMismatch","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EpochDurationNotSet","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisAlreadyAccepted","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"StakeExceedsGenesisStake","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a0604052306080523480156012575f80fd5b5060016009556080516131a361003e5f395f8181611e8301528181611eac0152611fed01526131a35ff3fe6080604052600436106102a5575f3560e01c80635e00bf461161016f578063a78d1fef116100d8578063c4d66de811610092578063d547741f1161006d578063d547741f146108a8578063d980b40d146108c7578063e6e3fb3a146108e6578063fc0c546a1461092b575f80fd5b8063c4d66de81461083c578063d1ba90ff1461085b578063d37304f814610889575f80fd5b8063a78d1fef14610763578063a885c97514610782578063a887b71c146107a1578063ad3cb1cc146107b5578063b1de97f7146107f2578063bf6eac2f1461081d575f80fd5b806386af70d11161012957806386af70d1146106a357806391d14854146106df57806392a2ebf3146106fe57806393dfb85c146107125780639db92f6814610731578063a217fddf14610750575f80fd5b80635e00bf46146105f357806360829f8a14610612578063771fcfc4146106315780637a997ab7146106505780637d93768b146106705780638129fc1c1461068f575f80fd5b806336568abe116102115780634f1ef286116101cb5780634f1ef2861461053b57806352d1902d1461054e57806355bdbe4c14610562578063574663a91461058157806357dd6a94146105a05780635c534359146105bf575f80fd5b806336568abe146104755780633bccf635146104945780633debeadc146104bf57806341566585146104de5780634234a479146104fd5780634e76a1391461051c575f80fd5b8063248a9ca311610262578063248a9ca3146103bb57806324fdfddf146103da578063286dd3f5146103f95780632f2ff15d14610418578063341d5ef51461043757806334eada3a14610456575f80fd5b806301ffc9a7146102a95780630c8f522f146102dd5780630ce52af5146103305780631789aeb41461034f5780631dc8b9491461037b57806322fceb751461039c575b5f80fd5b3480156102b4575f80fd5b506102c86102c3366004612aed565b610961565b60405190151581526020015b60405180910390f35b3480156102e8575f80fd5b506103226102f7366004612b28565b600560209081525f948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102d4565b34801561033b575f80fd5b5061032261034a366004612b78565b610997565b34801561035a575f80fd5b5061036e610369366004612bb7565b6109cc565b6040516102d49190612bd2565b348015610386575f80fd5b5061039a610395366004612c12565b610ab6565b005b3480156103a7575f80fd5b506103226103b6366004612bb7565b610bf2565b3480156103c6575f80fd5b506103226103d5366004612c3c565b610c0c565b3480156103e5575f80fd5b506103226103f4366004612b78565b610c2c565b348015610404575f80fd5b5061039a610413366004612bb7565b610ca3565b348015610423575f80fd5b5061039a610432366004612c53565b610cc8565b348015610442575f80fd5b5061036e610451366004612bb7565b610cea565b348015610461575f80fd5b50610322610470366004612c81565b610dcd565b348015610480575f80fd5b5061039a61048f366004612c53565b610dea565b34801561049f575f80fd5b506103226104ae366004612bb7565b60016020525f908152604090205481565b3480156104ca575f80fd5b506103226104d9366004612cbe565b610e22565b3480156104e9575f80fd5b5061039a6104f8366004612bb7565b610e36565b348015610508575f80fd5b5061036e610517366004612bb7565b610e57565b348015610527575f80fd5b5061039a610536366004612d31565b610fa5565b61039a610549366004612de1565b611042565b348015610559575f80fd5b5061032261105d565b34801561056d575f80fd5b5061032261057c366004612c12565b611078565b34801561058c575f80fd5b5061032261059b366004612bb7565b61110d565b3480156105ab575f80fd5b506103226105ba366004612bb7565b61111b565b3480156105ca575f80fd5b506103226105d9366004612bb7565b6001600160a01b03165f9081526001602052604090205490565b3480156105fe575f80fd5b5061039a61060d366004612b78565b61114a565b34801561061d575f80fd5b5061039a61062c366004612ea4565b611168565b34801561063c575f80fd5b5061032261064b366004612bb7565b6111fd565b34801561065b575f80fd5b506103225f8051602061310e83398151915281565b34801561067b575f80fd5b5061032261068a366004612b28565b611215565b34801561069a575f80fd5b5061039a611252565b3480156106ae575f80fd5b506103226106bd366004612b78565b600760209081525f938452604080852082529284528284209052825290205481565b3480156106ea575f80fd5b506102c86106f9366004612c53565b61135c565b348015610709575f80fd5b5061039a611392565b34801561071d575f80fd5b5061032261072c366004612b28565b611524565b34801561073c575f80fd5b5061032261074b366004612cbe565b611561565b34801561075b575f80fd5b506103225f81565b34801561076e575f80fd5b5061032261077d366004612c81565b611575565b34801561078d575f80fd5b5061039a61079c366004612ee2565b61158a565b3480156107ac575f80fd5b5061039a6117ac565b3480156107c0575f80fd5b506107e5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102d49190612fac565b3480156107fd575f80fd5b5061032261080c366004612bb7565b60026020525f908152604090205481565b348015610828575f80fd5b5061039a610837366004612ea4565b6117be565b348015610847575f80fd5b5061039a610856366004612bb7565b6119e9565b348015610866575f80fd5b506102c8610875366004612bb7565b60086020525f908152604090205460ff1681565b348015610894575f80fd5b5061039a6108a3366004612fe1565b611b0d565b3480156108b3575f80fd5b5061039a6108c2366004612c53565b611b8b565b3480156108d2575f80fd5b506103226108e1366004612bb7565b611ba7565b3480156108f1575f80fd5b50610322610900366004612b28565b600660209081525f948552604080862082529385528385208152918452828420909152825290205481565b348015610936575f80fd5b505f54610949906001600160a01b031681565b6040516001600160a01b0390911681526020016102d4565b5f6001600160e01b03198216637965db0b60e01b148061099157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b038084165f9081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b0381165f908152600360205260408120606091906109f090611c00565b6001600160401b03811115610a0757610a07612dcd565b604051908082528060200260200182016040528015610a30578160200160208202803683370190505b5090505f5b6001600160a01b0384165f908152600360205260409020610a5590611c00565b811015610aaf576001600160a01b0384165f908152600360205260409020610a7d9082611c09565b828281518110610a8f57610a8f613028565b6001600160a01b0390921660209283029190910190910152600101610a35565b5092915050565b610abf82611ba7565b811115610b255760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b2e82610bf2565b8111610b905760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b1c565b336001600160a01b03831614610bd75760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b1c565b6001600160a01b039091165f90815260026020526040902055565b6001600160a01b03165f9081526002602052604090205490565b5f9081525f8051602061314e833981519152602052604090206001015490565b5f80805b6001600160a01b0386165f908152600460205260409020610c5090611c00565b811015610c9a576001600160a01b0386165f908152600460205260409020610c869087908790610c809085611c09565b87611524565b610c909083613050565b9150600101610c30565b50949350505050565b5f610cad81611c14565b610cc45f8051602061310e83398151915283611b8b565b5050565b610cd182610c0c565b610cda81611c14565b610ce48383611c21565b50505050565b6001600160a01b0381165f90815260046020526040812060609190610d0e90611c00565b6001600160401b03811115610d2557610d25612dcd565b604051908082528060200260200182016040528015610d4e578160200160208202803683370190505b5090505f5b6001600160a01b0384165f908152600460205260409020610d7390611c00565b811015610aaf576001600160a01b0384165f908152600460205260409020610d9b9082611c09565b828281518110610dad57610dad613028565b6001600160a01b0390921660209283029190910190910152600101610d53565b5f610de284610ddb86610bf2565b8585611215565b949350505050565b6001600160a01b0381163314610e135760405163334bd91960e11b815260040160405180910390fd5b610e1d8282611cc2565b505050565b5f6109c583610e3085610bf2565b84610c2c565b5f610e4081611c14565b610cc45f8051602061310e83398151915283610cc8565b6001600160a01b0381165f90815260036020526040812060609190610e7b90611c00565b90505f805b82811015610ed3576001600160a01b0385165f908152600360205260408120610ea99083611c09565b90505f610eb68783610e22565b1115610eca5782610ec681613063565b9350505b50600101610e80565b505f816001600160401b03811115610eed57610eed612dcd565b604051908082528060200260200182016040528015610f16578160200160208202803683370190505b5090505f805b84811015610f9a576001600160a01b0387165f908152600360205260408120610f459083611c09565b90505f610f528983610e22565b1115610f915780848481518110610f6b57610f6b613028565b6001600160a01b039092166020928302919091019091015282610f8d81613063565b9350505b50600101610f1c565b509095945050505050565b610fad611d3b565b5f5b8581101561102f5761102733888884818110610fcd57610fcd613028565b9050602002016020810190610fe29190612bb7565b858585818110610ff457610ff4613028565b90506020020160208101906110099190612bb7565b88888681811061101b5761101b613028565b90506020020135611d65565b600101610faf565b5061103a6001600955565b505050505050565b61104a611e78565b61105382611f1c565b610cc48282611f26565b5f611066611fe2565b505f8051602061312e83398151915290565b5f8061108384610cea565b90505f61108f856109cc565b90505f805b8351811015611103575f5b83518110156110fa576110e688888785815181106110bf576110bf613028565b60200260200101518785815181106110d9576110d9613028565b6020026020010151611524565b6110f09084613050565b925060010161109f565b50600101611094565b5095945050505050565b5f6109918261057c84610bf2565b5f61112582610bf2565b156111435761113382611ba7565b61113e906001613050565b610991565b5f92915050565b611152611d3b565b61115e33848385611d65565b610e1d6001600955565b5f8051602061310e83398151915261117f81611c14565b611187611d3b565b61119c84611194866111fd565b85338661202b565b826001600160a01b03166111af856111fd565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610ce46001600955565b5f61120782610bf2565b156111435761113382610bf2565b6001600160a01b039384165f9081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112965750825b90505f826001600160401b031660011480156112b15750303b155b9050811580156112bf575080155b156112dd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561130757845460ff60401b1916600160401b1785555b61130f61207f565b831561135557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f9182525f8051602061314e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61139a611d3b565b335f8181526008602052604090205460ff16156113c95760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381165f908152600860209081526040808320805460ff191660019081179091559091529020546114035761140361307b565b61140c81611ba7565b6001600160a01b0382165f908152600260205260408120919091555b6001600160a01b0382165f90815260036020526040902061144890611c00565b811015611516576001600160a01b0382165f9081526003602052604081206114709083611c09565b90505f5b6001600160a01b0384165f90815260046020526040902061149490611c00565b81101561150c576001600160a01b0384165f9081526004602052604081206114bc9083611c09565b90505f6114cb865f8487611524565b90505f6114d787610bf2565b1115611502575f6114e787610bf2565b111561150257611502866114fa88610bf2565b84878561208f565b5050600101611474565b5050600101611428565b50506115226001600955565b565b6001600160a01b039384165f9081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b5f6109c58361156f85610bf2565b84610997565b5f610de28461158386610bf2565b8585611524565b611592611d3b565b5f5b85811015611797575f61165b61161c336115ce8b8b878181106115b9576115b9613028565b90506020020160208101906103b69190612bb7565b8d8d878181106115e0576115e0613028565b90506020020160208101906115f59190612bb7565b8c8c8881811061160757611607613028565b905060200201602081019061072c9190612bb7565b61165688888681811061163157611631613028565b9050602002013587878781811061164a5761164a613028565b9050602002013561211a565b61211a565b90506116b53089898581811061167357611673613028565b90506020020160208101906116889190612bb7565b8c8c8681811061169a5761169a613028565b90506020020160208101906116af9190612bb7565b84612129565b61172e336116c233610bf2565b8c8c868181106116d4576116d4613028565b90506020020160208101906116e99190612bb7565b8b8b878181106116fb576116fb613028565b90506020020160208101906117109190612bb7565b8a8a8881811061172257611722613028565b90506020020135612196565b61178e3361173b33610bf2565b8c8c8681811061174d5761174d613028565b90506020020160208101906117629190612bb7565b8b8b8781811061177457611774613028565b90506020020160208101906117899190612bb7565b6121d6565b50600101611594565b506117a26001600955565b5050505050505050565b611522336117b933610bf2565b612248565b5f8051602061310e8339815191526117d581611c14565b6117dd611d3b565b6001600160a01b0384165f9081526003602052604090206117fe9033612365565b505f80546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611845573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611869919061308f565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303815f875af11580156118bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e091906130a6565b506118eb8382613050565b5f546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611930573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611954919061308f565b1461197257604051631910d68360e21b815260040160405180910390fd5b6119878561197f876111fd565b86338761208f565b836001600160a01b031661199a866111fd565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610ce46001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611a2d5750825b90505f826001600160401b03166001148015611a485750303b155b905081158015611a56575080155b15611a745760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a9e57845460ff60401b1916600160401b1785555b611aa6612379565b5f80546001600160a01b0319166001600160a01b038816179055831561103a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611b15611d3b565b335f8181526001602052604081208590555b82811015611b7f57611b76848483818110611b4457611b44613028565b9050602002016020810190611b599190612bb7565b6001600160a01b0384165f90815260046020526040902090612365565b50600101611b27565b5050610e1d6001600955565b611b9482610c0c565b611b9d81611c14565b610ce48383611cc2565b6001600160a01b0381165f908152600160205260408120548103611bde5760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382165f9081526001602052604090205461099190426130c5565b5f610991825490565b5f6109c5838361238b565b611c1e81336123b1565b50565b5f5f8051602061314e833981519152611c3a848461135c565b611cb9575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611c6f3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610991565b5f915050610991565b5f5f8051602061314e833981519152611cdb848461135c565b15611cb9575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610991565b600260095403611d5e57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611daa5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b1c565b5f546001600160a01b03838116911614611dfc5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b1c565b5f546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303815f875af1158015611e54573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135591906130a6565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611efe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef25f8051602061312e833981519152546001600160a01b031690565b6001600160a01b031614155b156115225760405163703e46dd60e11b815260040160405180910390fd5b5f610cc481611c14565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f80575060408051601f3d908101601f19168201909252611f7d9181019061308f565b60015b611fa857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b1c565b5f8051602061312e8339815191528114611fd857604051632a87526960e21b815260048101829052602401610b1c565b610e1d83836123ea565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115225760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b038086165f90815260066020908152604080832088845282528083208785168452825280832093861683529290529081208054839290612073908490613050565b90915550505050505050565b61208761243f565b611522612379565b6001600160a01b038086165f908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906120d7908490613050565b90915550506001600160a01b038086165f908152600760209081526040808320888452825280832093871683529290529081208054839290612073908490613050565b5f8282188284100282186109c5565b306001600160a01b0385160361216a575f546001600160a01b0380841691160361215e5761215984848484612488565b610ce4565b61215984848484612574565b5f546001600160a01b0380841691160361218a5761215984848484611d65565b610ce4848484846126fb565b835f6121a487838787611524565b9050828110156121c0576121bb87838787856127d4565b6121cd565b6121cd87838787876127d4565b50505050505050565b5f6121e385858585611524565b90505f6121f1856001613050565b90505f61220087838787611215565b9050828111156121cd576001600160a01b038088165f9081526006602090815260408083208684528252808320848a16845282528083209388168352929052208390556121cd565b5f5b6001600160a01b0383165f90815260036020526040902061226a90611c00565b8110156122ff576001600160a01b0383165f9081526003602052604081206122929083611c09565b90505f5b6001600160a01b0385165f9081526004602052604090206122b690611c00565b8110156122f5576001600160a01b0385165f9081526004602052604081206122de9083611c09565b90506122ec8686838661285f565b50600101612296565b505060010161224a565b5061230b816001613050565b6001600160a01b0383165f81815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906123599084815260200190565b60405180910390a25050565b5f6109c5836001600160a01b038416612928565b61238161243f565b611c1e5f33611c21565b5f825f0182815481106123a0576123a0613028565b905f5260205f200154905092915050565b6123bb828261135c565b610cc45760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b1c565b6123f382612974565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561243757610e1d82826129d7565b610cc4612a49565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661152257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146124ea5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b1c565b5f546001600160a01b0383811691161461253c5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b1c565b5f5460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611e38565b6001600160a01b03841630146125d65760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b1c565b5f546001600160a01b0380841691160361262d5760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b1c565b5f5460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af115801561267c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a091906130a6565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b5f604051808303815f87803b1580156126e9575f80fd5b505af11580156117a2573d5f803e3d5ffd5b3033036127405760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b1c565b5f546001600160a01b038084169116036127975760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b1c565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d83906064016126d2565b6001600160a01b038086165f9081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061281c9084906130e4565b90915550506001600160a01b038086165f9081526007602090815260408083208884528252808320938716835292905290812080548392906120739084906130e4565b5f61286c85858585611524565b90505f6128858661287e876001613050565b8686611215565b9050818111156128925750805b5f61289d82846130e4565b90506128b6876128ae886001613050565b87878561208f565b81156128c8576128c830858785612488565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd3428686604051612917929190918252602082015260400190565b60405180910390a450505050505050565b5f81815260018301602052604081205461296d57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610991565b505f610991565b806001600160a01b03163b5f036129a957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b1c565b5f8051602061312e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516129f391906130f7565b5f60405180830381855af49150503d805f8114612a2b576040519150601f19603f3d011682016040523d82523d5f602084013e612a30565b606091505b5091509150612a40858383612a68565b95945050505050565b34156115225760405163b398979f60e01b815260040160405180910390fd5b606082612a7d57612a7882612ac4565b6109c5565b8151158015612a9457506001600160a01b0384163b155b15612abd57604051639996b31560e01b81526001600160a01b0385166004820152602401610b1c565b50806109c5565b805115612ad45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215612afd575f80fd5b81356001600160e01b0319811681146109c5575f80fd5b6001600160a01b0381168114611c1e575f80fd5b5f805f8060808587031215612b3b575f80fd5b8435612b4681612b14565b9350602085013592506040850135612b5d81612b14565b91506060850135612b6d81612b14565b939692955090935050565b5f805f60608486031215612b8a575f80fd5b8335612b9581612b14565b9250602084013591506040840135612bac81612b14565b809150509250925092565b5f60208284031215612bc7575f80fd5b81356109c581612b14565b602080825282518282018190525f918401906040840190835b81811015610f9a5783516001600160a01b0316835260209384019390920191600101612beb565b5f8060408385031215612c23575f80fd5b8235612c2e81612b14565b946020939093013593505050565b5f60208284031215612c4c575f80fd5b5035919050565b5f8060408385031215612c64575f80fd5b823591506020830135612c7681612b14565b809150509250929050565b5f805f60608486031215612c93575f80fd5b8335612c9e81612b14565b92506020840135612cae81612b14565b91506040840135612bac81612b14565b5f8060408385031215612ccf575f80fd5b8235612cda81612b14565b91506020830135612c7681612b14565b5f8083601f840112612cfa575f80fd5b5081356001600160401b03811115612d10575f80fd5b6020830191508360208260051b8501011115612d2a575f80fd5b9250929050565b5f805f805f8060608789031215612d46575f80fd5b86356001600160401b03811115612d5b575f80fd5b612d6789828a01612cea565b90975095505060208701356001600160401b03811115612d85575f80fd5b612d9189828a01612cea565b90955093505060408701356001600160401b03811115612daf575f80fd5b612dbb89828a01612cea565b979a9699509497509295939492505050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215612df2575f80fd5b8235612dfd81612b14565b915060208301356001600160401b03811115612e17575f80fd5b8301601f81018513612e27575f80fd5b80356001600160401b03811115612e4057612e40612dcd565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612e6e57612e6e612dcd565b604052818152828201602001871015612e85575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f805f60608486031215612eb6575f80fd5b8335612ec181612b14565b92506020840135612ed181612b14565b929592945050506040919091013590565b5f805f805f805f806080898b031215612ef9575f80fd5b88356001600160401b03811115612f0e575f80fd5b612f1a8b828c01612cea565b90995097505060208901356001600160401b03811115612f38575f80fd5b612f448b828c01612cea565b90975095505060408901356001600160401b03811115612f62575f80fd5b612f6e8b828c01612cea565b90955093505060608901356001600160401b03811115612f8c575f80fd5b612f988b828c01612cea565b999c989b5096995094979396929594505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f60408486031215612ff3575f80fd5b8335925060208401356001600160401b0381111561300f575f80fd5b61301b86828701612cea565b9497909650939450505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156109915761099161303c565b5f600182016130745761307461303c565b5060010190565b634e487b7160e01b5f52600160045260245ffd5b5f6020828403121561309f575f80fd5b5051919050565b5f602082840312156130b6575f80fd5b815180151581146109c5575f80fd5b5f826130df57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109915761099161303c565b5f82518060208501845e5f92019182525091905056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220e0269fa999d9a884e7d5efe6e7b9a93aebf6d1e0488be1c3ffd5941a8c891cc664736f6c634300081a0033","sourceMap":"766:27108:114:-:0;;;1171:4:21;1128:48;;766:27108:114;;;;;;;;;-1:-1:-1;1857:1:57;2061:7;:21;766:27108:114;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102a5575f3560e01c80635e00bf461161016f578063a78d1fef116100d8578063c4d66de811610092578063d547741f1161006d578063d547741f146108a8578063d980b40d146108c7578063e6e3fb3a146108e6578063fc0c546a1461092b575f80fd5b8063c4d66de81461083c578063d1ba90ff1461085b578063d37304f814610889575f80fd5b8063a78d1fef14610763578063a885c97514610782578063a887b71c146107a1578063ad3cb1cc146107b5578063b1de97f7146107f2578063bf6eac2f1461081d575f80fd5b806386af70d11161012957806386af70d1146106a357806391d14854146106df57806392a2ebf3146106fe57806393dfb85c146107125780639db92f6814610731578063a217fddf14610750575f80fd5b80635e00bf46146105f357806360829f8a14610612578063771fcfc4146106315780637a997ab7146106505780637d93768b146106705780638129fc1c1461068f575f80fd5b806336568abe116102115780634f1ef286116101cb5780634f1ef2861461053b57806352d1902d1461054e57806355bdbe4c14610562578063574663a91461058157806357dd6a94146105a05780635c534359146105bf575f80fd5b806336568abe146104755780633bccf635146104945780633debeadc146104bf57806341566585146104de5780634234a479146104fd5780634e76a1391461051c575f80fd5b8063248a9ca311610262578063248a9ca3146103bb57806324fdfddf146103da578063286dd3f5146103f95780632f2ff15d14610418578063341d5ef51461043757806334eada3a14610456575f80fd5b806301ffc9a7146102a95780630c8f522f146102dd5780630ce52af5146103305780631789aeb41461034f5780631dc8b9491461037b57806322fceb751461039c575b5f80fd5b3480156102b4575f80fd5b506102c86102c3366004612aed565b610961565b60405190151581526020015b60405180910390f35b3480156102e8575f80fd5b506103226102f7366004612b28565b600560209081525f948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102d4565b34801561033b575f80fd5b5061032261034a366004612b78565b610997565b34801561035a575f80fd5b5061036e610369366004612bb7565b6109cc565b6040516102d49190612bd2565b348015610386575f80fd5b5061039a610395366004612c12565b610ab6565b005b3480156103a7575f80fd5b506103226103b6366004612bb7565b610bf2565b3480156103c6575f80fd5b506103226103d5366004612c3c565b610c0c565b3480156103e5575f80fd5b506103226103f4366004612b78565b610c2c565b348015610404575f80fd5b5061039a610413366004612bb7565b610ca3565b348015610423575f80fd5b5061039a610432366004612c53565b610cc8565b348015610442575f80fd5b5061036e610451366004612bb7565b610cea565b348015610461575f80fd5b50610322610470366004612c81565b610dcd565b348015610480575f80fd5b5061039a61048f366004612c53565b610dea565b34801561049f575f80fd5b506103226104ae366004612bb7565b60016020525f908152604090205481565b3480156104ca575f80fd5b506103226104d9366004612cbe565b610e22565b3480156104e9575f80fd5b5061039a6104f8366004612bb7565b610e36565b348015610508575f80fd5b5061036e610517366004612bb7565b610e57565b348015610527575f80fd5b5061039a610536366004612d31565b610fa5565b61039a610549366004612de1565b611042565b348015610559575f80fd5b5061032261105d565b34801561056d575f80fd5b5061032261057c366004612c12565b611078565b34801561058c575f80fd5b5061032261059b366004612bb7565b61110d565b3480156105ab575f80fd5b506103226105ba366004612bb7565b61111b565b3480156105ca575f80fd5b506103226105d9366004612bb7565b6001600160a01b03165f9081526001602052604090205490565b3480156105fe575f80fd5b5061039a61060d366004612b78565b61114a565b34801561061d575f80fd5b5061039a61062c366004612ea4565b611168565b34801561063c575f80fd5b5061032261064b366004612bb7565b6111fd565b34801561065b575f80fd5b506103225f8051602061310e83398151915281565b34801561067b575f80fd5b5061032261068a366004612b28565b611215565b34801561069a575f80fd5b5061039a611252565b3480156106ae575f80fd5b506103226106bd366004612b78565b600760209081525f938452604080852082529284528284209052825290205481565b3480156106ea575f80fd5b506102c86106f9366004612c53565b61135c565b348015610709575f80fd5b5061039a611392565b34801561071d575f80fd5b5061032261072c366004612b28565b611524565b34801561073c575f80fd5b5061032261074b366004612cbe565b611561565b34801561075b575f80fd5b506103225f81565b34801561076e575f80fd5b5061032261077d366004612c81565b611575565b34801561078d575f80fd5b5061039a61079c366004612ee2565b61158a565b3480156107ac575f80fd5b5061039a6117ac565b3480156107c0575f80fd5b506107e5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102d49190612fac565b3480156107fd575f80fd5b5061032261080c366004612bb7565b60026020525f908152604090205481565b348015610828575f80fd5b5061039a610837366004612ea4565b6117be565b348015610847575f80fd5b5061039a610856366004612bb7565b6119e9565b348015610866575f80fd5b506102c8610875366004612bb7565b60086020525f908152604090205460ff1681565b348015610894575f80fd5b5061039a6108a3366004612fe1565b611b0d565b3480156108b3575f80fd5b5061039a6108c2366004612c53565b611b8b565b3480156108d2575f80fd5b506103226108e1366004612bb7565b611ba7565b3480156108f1575f80fd5b50610322610900366004612b28565b600660209081525f948552604080862082529385528385208152918452828420909152825290205481565b348015610936575f80fd5b505f54610949906001600160a01b031681565b6040516001600160a01b0390911681526020016102d4565b5f6001600160e01b03198216637965db0b60e01b148061099157506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b038084165f9081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b0381165f908152600360205260408120606091906109f090611c00565b6001600160401b03811115610a0757610a07612dcd565b604051908082528060200260200182016040528015610a30578160200160208202803683370190505b5090505f5b6001600160a01b0384165f908152600360205260409020610a5590611c00565b811015610aaf576001600160a01b0384165f908152600360205260409020610a7d9082611c09565b828281518110610a8f57610a8f613028565b6001600160a01b0390921660209283029190910190910152600101610a35565b5092915050565b610abf82611ba7565b811115610b255760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b2e82610bf2565b8111610b905760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b1c565b336001600160a01b03831614610bd75760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b1c565b6001600160a01b039091165f90815260026020526040902055565b6001600160a01b03165f9081526002602052604090205490565b5f9081525f8051602061314e833981519152602052604090206001015490565b5f80805b6001600160a01b0386165f908152600460205260409020610c5090611c00565b811015610c9a576001600160a01b0386165f908152600460205260409020610c869087908790610c809085611c09565b87611524565b610c909083613050565b9150600101610c30565b50949350505050565b5f610cad81611c14565b610cc45f8051602061310e83398151915283611b8b565b5050565b610cd182610c0c565b610cda81611c14565b610ce48383611c21565b50505050565b6001600160a01b0381165f90815260046020526040812060609190610d0e90611c00565b6001600160401b03811115610d2557610d25612dcd565b604051908082528060200260200182016040528015610d4e578160200160208202803683370190505b5090505f5b6001600160a01b0384165f908152600460205260409020610d7390611c00565b811015610aaf576001600160a01b0384165f908152600460205260409020610d9b9082611c09565b828281518110610dad57610dad613028565b6001600160a01b0390921660209283029190910190910152600101610d53565b5f610de284610ddb86610bf2565b8585611215565b949350505050565b6001600160a01b0381163314610e135760405163334bd91960e11b815260040160405180910390fd5b610e1d8282611cc2565b505050565b5f6109c583610e3085610bf2565b84610c2c565b5f610e4081611c14565b610cc45f8051602061310e83398151915283610cc8565b6001600160a01b0381165f90815260036020526040812060609190610e7b90611c00565b90505f805b82811015610ed3576001600160a01b0385165f908152600360205260408120610ea99083611c09565b90505f610eb68783610e22565b1115610eca5782610ec681613063565b9350505b50600101610e80565b505f816001600160401b03811115610eed57610eed612dcd565b604051908082528060200260200182016040528015610f16578160200160208202803683370190505b5090505f805b84811015610f9a576001600160a01b0387165f908152600360205260408120610f459083611c09565b90505f610f528983610e22565b1115610f915780848481518110610f6b57610f6b613028565b6001600160a01b039092166020928302919091019091015282610f8d81613063565b9350505b50600101610f1c565b509095945050505050565b610fad611d3b565b5f5b8581101561102f5761102733888884818110610fcd57610fcd613028565b9050602002016020810190610fe29190612bb7565b858585818110610ff457610ff4613028565b90506020020160208101906110099190612bb7565b88888681811061101b5761101b613028565b90506020020135611d65565b600101610faf565b5061103a6001600955565b505050505050565b61104a611e78565b61105382611f1c565b610cc48282611f26565b5f611066611fe2565b505f8051602061312e83398151915290565b5f8061108384610cea565b90505f61108f856109cc565b90505f805b8351811015611103575f5b83518110156110fa576110e688888785815181106110bf576110bf613028565b60200260200101518785815181106110d9576110d9613028565b6020026020010151611524565b6110f09084613050565b925060010161109f565b50600101611094565b5095945050505050565b5f6109918261057c84610bf2565b5f61112582610bf2565b156111435761113382611ba7565b61113e906001613050565b610991565b5f92915050565b611152611d3b565b61115e33848385611d65565b610e1d6001600955565b5f8051602061310e83398151915261117f81611c14565b611187611d3b565b61119c84611194866111fd565b85338661202b565b826001600160a01b03166111af856111fd565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610ce46001600955565b5f61120782610bf2565b156111435761113382610bf2565b6001600160a01b039384165f9081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156112965750825b90505f826001600160401b031660011480156112b15750303b155b9050811580156112bf575080155b156112dd5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561130757845460ff60401b1916600160401b1785555b61130f61207f565b831561135557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f9182525f8051602061314e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61139a611d3b565b335f8181526008602052604090205460ff16156113c95760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381165f908152600860209081526040808320805460ff191660019081179091559091529020546114035761140361307b565b61140c81611ba7565b6001600160a01b0382165f908152600260205260408120919091555b6001600160a01b0382165f90815260036020526040902061144890611c00565b811015611516576001600160a01b0382165f9081526003602052604081206114709083611c09565b90505f5b6001600160a01b0384165f90815260046020526040902061149490611c00565b81101561150c576001600160a01b0384165f9081526004602052604081206114bc9083611c09565b90505f6114cb865f8487611524565b90505f6114d787610bf2565b1115611502575f6114e787610bf2565b111561150257611502866114fa88610bf2565b84878561208f565b5050600101611474565b5050600101611428565b50506115226001600955565b565b6001600160a01b039384165f9081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b5f6109c58361156f85610bf2565b84610997565b5f610de28461158386610bf2565b8585611524565b611592611d3b565b5f5b85811015611797575f61165b61161c336115ce8b8b878181106115b9576115b9613028565b90506020020160208101906103b69190612bb7565b8d8d878181106115e0576115e0613028565b90506020020160208101906115f59190612bb7565b8c8c8881811061160757611607613028565b905060200201602081019061072c9190612bb7565b61165688888681811061163157611631613028565b9050602002013587878781811061164a5761164a613028565b9050602002013561211a565b61211a565b90506116b53089898581811061167357611673613028565b90506020020160208101906116889190612bb7565b8c8c8681811061169a5761169a613028565b90506020020160208101906116af9190612bb7565b84612129565b61172e336116c233610bf2565b8c8c868181106116d4576116d4613028565b90506020020160208101906116e99190612bb7565b8b8b878181106116fb576116fb613028565b90506020020160208101906117109190612bb7565b8a8a8881811061172257611722613028565b90506020020135612196565b61178e3361173b33610bf2565b8c8c8681811061174d5761174d613028565b90506020020160208101906117629190612bb7565b8b8b8781811061177457611774613028565b90506020020160208101906117899190612bb7565b6121d6565b50600101611594565b506117a26001600955565b5050505050505050565b611522336117b933610bf2565b612248565b5f8051602061310e8339815191526117d581611c14565b6117dd611d3b565b6001600160a01b0384165f9081526003602052604090206117fe9033612365565b505f80546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611845573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611869919061308f565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303815f875af11580156118bc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118e091906130a6565b506118eb8382613050565b5f546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015611930573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611954919061308f565b1461197257604051631910d68360e21b815260040160405180910390fd5b6119878561197f876111fd565b86338761208f565b836001600160a01b031661199a866111fd565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610ce46001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611a2d5750825b90505f826001600160401b03166001148015611a485750303b155b905081158015611a56575080155b15611a745760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611a9e57845460ff60401b1916600160401b1785555b611aa6612379565b5f80546001600160a01b0319166001600160a01b038816179055831561103a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611b15611d3b565b335f8181526001602052604081208590555b82811015611b7f57611b76848483818110611b4457611b44613028565b9050602002016020810190611b599190612bb7565b6001600160a01b0384165f90815260046020526040902090612365565b50600101611b27565b5050610e1d6001600955565b611b9482610c0c565b611b9d81611c14565b610ce48383611cc2565b6001600160a01b0381165f908152600160205260408120548103611bde5760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382165f9081526001602052604090205461099190426130c5565b5f610991825490565b5f6109c5838361238b565b611c1e81336123b1565b50565b5f5f8051602061314e833981519152611c3a848461135c565b611cb9575f848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611c6f3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610991565b5f915050610991565b5f5f8051602061314e833981519152611cdb848461135c565b15611cb9575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610991565b600260095403611d5e57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611daa5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b1c565b5f546001600160a01b03838116911614611dfc5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b1c565b5f546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303815f875af1158015611e54573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135591906130a6565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611efe57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ef25f8051602061312e833981519152546001600160a01b031690565b6001600160a01b031614155b156115225760405163703e46dd60e11b815260040160405180910390fd5b5f610cc481611c14565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611f80575060408051601f3d908101601f19168201909252611f7d9181019061308f565b60015b611fa857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b1c565b5f8051602061312e8339815191528114611fd857604051632a87526960e21b815260048101829052602401610b1c565b610e1d83836123ea565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115225760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b038086165f90815260066020908152604080832088845282528083208785168452825280832093861683529290529081208054839290612073908490613050565b90915550505050505050565b61208761243f565b611522612379565b6001600160a01b038086165f908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906120d7908490613050565b90915550506001600160a01b038086165f908152600760209081526040808320888452825280832093871683529290529081208054839290612073908490613050565b5f8282188284100282186109c5565b306001600160a01b0385160361216a575f546001600160a01b0380841691160361215e5761215984848484612488565b610ce4565b61215984848484612574565b5f546001600160a01b0380841691160361218a5761215984848484611d65565b610ce4848484846126fb565b835f6121a487838787611524565b9050828110156121c0576121bb87838787856127d4565b6121cd565b6121cd87838787876127d4565b50505050505050565b5f6121e385858585611524565b90505f6121f1856001613050565b90505f61220087838787611215565b9050828111156121cd576001600160a01b038088165f9081526006602090815260408083208684528252808320848a16845282528083209388168352929052208390556121cd565b5f5b6001600160a01b0383165f90815260036020526040902061226a90611c00565b8110156122ff576001600160a01b0383165f9081526003602052604081206122929083611c09565b90505f5b6001600160a01b0385165f9081526004602052604090206122b690611c00565b8110156122f5576001600160a01b0385165f9081526004602052604081206122de9083611c09565b90506122ec8686838661285f565b50600101612296565b505060010161224a565b5061230b816001613050565b6001600160a01b0383165f81815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906123599084815260200190565b60405180910390a25050565b5f6109c5836001600160a01b038416612928565b61238161243f565b611c1e5f33611c21565b5f825f0182815481106123a0576123a0613028565b905f5260205f200154905092915050565b6123bb828261135c565b610cc45760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b1c565b6123f382612974565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561243757610e1d82826129d7565b610cc4612a49565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661152257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146124ea5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b1c565b5f546001600160a01b0383811691161461253c5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b1c565b5f5460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611e38565b6001600160a01b03841630146125d65760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b1c565b5f546001600160a01b0380841691160361262d5760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b1c565b5f5460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303815f875af115801561267c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126a091906130a6565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b5f604051808303815f87803b1580156126e9575f80fd5b505af11580156117a2573d5f803e3d5ffd5b3033036127405760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b1c565b5f546001600160a01b038084169116036127975760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b1c565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d83906064016126d2565b6001600160a01b038086165f9081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061281c9084906130e4565b90915550506001600160a01b038086165f9081526007602090815260408083208884528252808320938716835292905290812080548392906120739084906130e4565b5f61286c85858585611524565b90505f6128858661287e876001613050565b8686611215565b9050818111156128925750805b5f61289d82846130e4565b90506128b6876128ae886001613050565b87878561208f565b81156128c8576128c830858785612488565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd3428686604051612917929190918252602082015260400190565b60405180910390a450505050505050565b5f81815260018301602052604081205461296d57508154600181810184555f848152602080822090930184905584548482528286019093526040902091909155610991565b505f610991565b806001600160a01b03163b5f036129a957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b1c565b5f8051602061312e83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516129f391906130f7565b5f60405180830381855af49150503d805f8114612a2b576040519150601f19603f3d011682016040523d82523d5f602084013e612a30565b606091505b5091509150612a40858383612a68565b95945050505050565b34156115225760405163b398979f60e01b815260040160405180910390fd5b606082612a7d57612a7882612ac4565b6109c5565b8151158015612a9457506001600160a01b0384163b155b15612abd57604051639996b31560e01b81526001600160a01b0385166004820152602401610b1c565b50806109c5565b805115612ad45780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215612afd575f80fd5b81356001600160e01b0319811681146109c5575f80fd5b6001600160a01b0381168114611c1e575f80fd5b5f805f8060808587031215612b3b575f80fd5b8435612b4681612b14565b9350602085013592506040850135612b5d81612b14565b91506060850135612b6d81612b14565b939692955090935050565b5f805f60608486031215612b8a575f80fd5b8335612b9581612b14565b9250602084013591506040840135612bac81612b14565b809150509250925092565b5f60208284031215612bc7575f80fd5b81356109c581612b14565b602080825282518282018190525f918401906040840190835b81811015610f9a5783516001600160a01b0316835260209384019390920191600101612beb565b5f8060408385031215612c23575f80fd5b8235612c2e81612b14565b946020939093013593505050565b5f60208284031215612c4c575f80fd5b5035919050565b5f8060408385031215612c64575f80fd5b823591506020830135612c7681612b14565b809150509250929050565b5f805f60608486031215612c93575f80fd5b8335612c9e81612b14565b92506020840135612cae81612b14565b91506040840135612bac81612b14565b5f8060408385031215612ccf575f80fd5b8235612cda81612b14565b91506020830135612c7681612b14565b5f8083601f840112612cfa575f80fd5b5081356001600160401b03811115612d10575f80fd5b6020830191508360208260051b8501011115612d2a575f80fd5b9250929050565b5f805f805f8060608789031215612d46575f80fd5b86356001600160401b03811115612d5b575f80fd5b612d6789828a01612cea565b90975095505060208701356001600160401b03811115612d85575f80fd5b612d9189828a01612cea565b90955093505060408701356001600160401b03811115612daf575f80fd5b612dbb89828a01612cea565b979a9699509497509295939492505050565b634e487b7160e01b5f52604160045260245ffd5b5f8060408385031215612df2575f80fd5b8235612dfd81612b14565b915060208301356001600160401b03811115612e17575f80fd5b8301601f81018513612e27575f80fd5b80356001600160401b03811115612e4057612e40612dcd565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612e6e57612e6e612dcd565b604052818152828201602001871015612e85575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f805f60608486031215612eb6575f80fd5b8335612ec181612b14565b92506020840135612ed181612b14565b929592945050506040919091013590565b5f805f805f805f806080898b031215612ef9575f80fd5b88356001600160401b03811115612f0e575f80fd5b612f1a8b828c01612cea565b90995097505060208901356001600160401b03811115612f38575f80fd5b612f448b828c01612cea565b90975095505060408901356001600160401b03811115612f62575f80fd5b612f6e8b828c01612cea565b90955093505060608901356001600160401b03811115612f8c575f80fd5b612f988b828c01612cea565b999c989b5096995094979396929594505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f60408486031215612ff3575f80fd5b8335925060208401356001600160401b0381111561300f575f80fd5b61301b86828701612cea565b9497909650939450505050565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156109915761099161303c565b5f600182016130745761307461303c565b5060010190565b634e487b7160e01b5f52600160045260245ffd5b5f6020828403121561309f575f80fd5b5051919050565b5f602082840312156130b6575f80fd5b815180151581146109c5575f80fd5b5f826130df57634e487b7160e01b5f52601260045260245ffd5b500490565b818103818111156109915761099161303c565b5f82518060208501845e5f92019182525091905056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220e0269fa999d9a884e7d5efe6e7b9a93aebf6d1e0488be1c3ffd5941a8c891cc664736f6c634300081a0033","sourceMap":"766:27108:114:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:143;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;1474:208:115;;;;;;;;;;-1:-1:-1;1474:208:115;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1434:25:143;;;1422:2;1407:18;1474:208:115;1288:177:143;10872:215:114;;;;;;;;;;-1:-1:-1;10872:215:114;;;;;:::i;:::-;;:::i;2321:419::-;;;;;;;;;;-1:-1:-1;2321:419:114;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4287:406::-;;;;;;;;;;-1:-1:-1;4287:406:114;;;;;:::i;:::-;;:::i;:::-;;8307:134;;;;;;;;;;-1:-1:-1;8307:134:114;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;11409:381:114:-;;;;;;;;;;-1:-1:-1;11409:381:114;;;;;:::i;:::-;;:::i;26739:151::-;;;;;;;;;;-1:-1:-1;26739:151:114;;;;;:::i;:::-;;:::i;5246:136:19:-;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;1686:554:114:-;;;;;;;;;;-1:-1:-1;1686:554:114;;;;;:::i;:::-;;:::i;10462:330::-;;;;;;;;;;-1:-1:-1;10462:330:114;;;;;:::i;:::-;;:::i;6348:245:19:-;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;650:77:115:-;;;;;;;;;;-1:-1:-1;650:77:115;;;;;:::i;:::-;;;;;;;;;;;;;;11796:192:114;;;;;;;;;;-1:-1:-1;11796:192:114;;;;;:::i;:::-;;:::i;26593:140::-;;;;;;;;;;-1:-1:-1;26593:140:114;;;;;:::i;:::-;;:::i;2827:1107::-;;;;;;;;;;-1:-1:-1;2827:1107:114;;;;;:::i;:::-;;:::i;25966:457::-;;;;;;;;;;-1:-1:-1;25966:457:114;;;;;:::i;:::-;;:::i;4161:214:21:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;26982:542:114:-;;;;;;;;;;-1:-1:-1;26982:542:114;;;;;:::i;:::-;;:::i;27695:176::-;;;;;;;;;;-1:-1:-1;27695:176:114;;;;;:::i;:::-;;:::i;9069:182::-;;;;;;;;;;-1:-1:-1;9069:182:114;;;;;:::i;:::-;;:::i;4001:125::-;;;;;;;;;;-1:-1:-1;4001:125:114;;;;;:::i;:::-;-1:-1:-1;;;;;4090:29:114;4064:7;4090:29;;;:21;:29;;;;;;;4001:125;25461:244;;;;;;;;;;-1:-1:-1;25461:244:114;;;;;:::i;:::-;;:::i;13972:972::-;;;;;;;;;;-1:-1:-1;13972:972:114;;;;;:::i;:::-;;:::i;8661:180::-;;;;;;;;;;-1:-1:-1;8661:180:114;;;;;:::i;:::-;;:::i;2462:68:115:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2462:68:115;;10109:254:114;;;;;;;;;;-1:-1:-1;10109:254:114;;;;;:::i;:::-;;:::i;514:86:116:-;;;;;;;;;;;;;:::i;2186:152:115:-;;;;;;;;;;-1:-1:-1;2186:152:115;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4699:1563:114:-;;;;;;;;;;;;;:::i;9342:250::-;;;;;;;;;;-1:-1:-1;9342:250:114;;;;;:::i;:::-;;:::i;11173:230::-;;;;;;;;;;-1:-1:-1;11173:230:114;;;;;:::i;:::-;;:::i;2317:49:19:-;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;9689:326:114;;;;;;;;;;-1:-1:-1;9689:326:114;;;;;:::i;:::-;;:::i;19744:1588::-;;;;;;;;;;-1:-1:-1;19744:1588:114;;;;;:::i;:::-;;:::i;17307:108::-;;;;;;;;;;;;;:::i;1819:58:21:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;977:93:115:-;;;;;;;;;;-1:-1:-1;977:93:115;;;;;:::i;:::-;;;;;;;;;;;;;;12036:1885:114;;;;;;;;;;-1:-1:-1;12036:1885:114;;;;;:::i;:::-;;:::i;1051:125::-;;;;;;;;;;-1:-1:-1;1051:125:114;;;;;:::i;:::-;;:::i;2345:60:115:-;;;;;;;;;;-1:-1:-1;2345:60:115;;;;;:::i;:::-;;;;;;;;;;;;;;;;1245:359:114;;;;;;;;;;-1:-1:-1;1245:359:114;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;8002:226:114:-;;;;;;;;;;-1:-1:-1;8002:226:114;;;;;:::i;:::-;;:::i;1832:210:115:-;;;;;;;;;;-1:-1:-1;1832:210:115;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:19;;;;;;;;;;-1:-1:-1;471:19:115;;;;-1:-1:-1;;;;;471:19:115;;;;;;-1:-1:-1;;;;;11558:32:143;;;11540:51;;11528:2;11513:18;471:19:115;11378:219:143;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;10872:215:114:-;-1:-1:-1;;;;;11026:36:114;;;11000:7;11026:36;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;10872:215;;;;;;:::o;2321:419::-;-1:-1:-1;;;;;2488:35:114;;2432:26;2488:35;;;:27;:35;;;;;2404:16;;2432:26;2488:44;;:42;:44::i;:::-;-1:-1:-1;;;;;2461:81:114;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2461:81:114;;2432:110;;2557:9;2552:156;-1:-1:-1;;;;;2576:35:114;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;2572:1;:48;2552:156;;;-1:-1:-1;;;;;2656:35:114;;;;;;:27;:35;;;;;:41;;2695:1;2656:38;:41::i;:::-;2641:9;2651:1;2641:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2641:56:114;;;:12;;;;;;;;;;;:56;2622:3;;2552:156;;;-1:-1:-1;2724:9:114;2321:419;-1:-1:-1;;2321:419:114:o;4287:406::-;4387:38;4417:6;4387:21;:38::i;:::-;4375:8;:50;;4367:104;;;;-1:-1:-1;;;4367:104:114;;11936:2:143;4367:104:114;;;11918:21:143;11975:2;11955:18;;;11948:30;12014:34;11994:18;;;11987:62;-1:-1:-1;;;12065:18:143;;;12058:39;12114:19;;4367:104:114;;;;;;;;;4500:25;4518:6;4500:17;:25::i;:::-;4489:8;:36;4481:92;;;;-1:-1:-1;;;4481:92:114;;12346:2:143;4481:92:114;;;12328:21:143;12385:2;12365:18;;;12358:30;12424:34;12404:18;;;12397:62;-1:-1:-1;;;12475:18:143;;;12468:41;12526:19;;4481:92:114;12144:407:143;4481:92:114;4591:10;-1:-1:-1;;;;;4591:20:114;;;4583:45;;;;-1:-1:-1;;;4583:45:114;;12758:2:143;4583:45:114;;;12740:21:143;12797:2;12777:18;;;12770:30;-1:-1:-1;;;12816:18:143;;;12809:42;12868:18;;4583:45:114;12556:336:143;4583:45:114;-1:-1:-1;;;;;4638:37:114;;;;;;;:29;:37;;;;;:48;4287:406::o;8307:134::-;-1:-1:-1;;;;;8397:37:114;8371:7;8397:37;;;:29;:37;;;;;;;8307:134::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;11409:381:114:-;11505:7;;;11559:195;-1:-1:-1;;;;;11583:36:114;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;11579:1;:49;11559:195;;;-1:-1:-1;;;;;11690:36:114;;;;;;:28;:36;;;;;11666:77;;11675:6;;11683:5;;11690:42;;11730:1;11690:39;:42::i;:::-;11734:8;11666;:77::i;:::-;11649:94;;;;:::i;:::-;;-1:-1:-1;11630:3:114;;11559:195;;;-1:-1:-1;11770:13:114;11409:381;-1:-1:-1;;;;11409:381:114:o;26739:151::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26851:32:114::1;-1:-1:-1::0;;;;;;;;;;;26878:4:114::1;26851:10;:32::i;:::-;26739:151:::0;;:::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;1686:554:114:-;-1:-1:-1;;;;;1983:36:114;;1926:27;1983:36;;;:28;:36;;;;;1770:16;;1926:27;1983:45;;:43;:45::i;:::-;-1:-1:-1;;;;;1956:82:114;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1956:82:114;;1926:112;;2053:9;2048:159;-1:-1:-1;;;;;2072:36:114;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;2068:1;:49;2048:159;;;-1:-1:-1;;;;;2154:36:114;;;;;;:28;:36;;;;;:42;;2194:1;2154:39;:42::i;:::-;2138:10;2149:1;2138:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2138:58:114;;;:13;;;;;;;;;;;:58;2119:3;;2048:159;;10462:330;10603:7;10641:144;10669:6;10693:25;10711:6;10693:17;:25::i;:::-;10736:9;10763:8;10641:10;:144::i;:::-;10622:163;10462:330;-1:-1:-1;;;;10462:330:114:o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;11796:192:114:-;11894:7;11920:61;11937:6;11945:25;11963:6;11945:17;:25::i;:::-;11972:8;11920:16;:61::i;26593:140::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26695:31:114::1;-1:-1:-1::0;;;;;;;;;;;26721:4:114::1;26695:9;:31::i;2827:1107::-:0;-1:-1:-1;;;;;3022:35:114;;2997:22;3022:35;;;:27;:35;;;;;2923:16;;2997:22;3022:44;;:42;:44::i;:::-;2997:69;;3123:27;3169:9;3164:258;3188:14;3184:1;:18;3164:258;;;-1:-1:-1;;;;;3242:35:114;;3223:16;3242:35;;;:27;:35;;;;;:41;;3281:1;3242:38;:41::i;:::-;3223:60;;3355:1;3301:51;3335:6;3343:8;3301:33;:51::i;:::-;:55;3297:115;;;3376:21;;;;:::i;:::-;;;;3297:115;-1:-1:-1;3204:3:114;;3164:258;;;;3476:32;3525:19;-1:-1:-1;;;;;3511:34:114;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3511:34:114;;3476:69;;3555:19;3593:9;3588:307;3612:14;3608:1;:18;3588:307;;;-1:-1:-1;;;;;3666:35:114;;3647:16;3666:35;;;:27;:35;;;;;:41;;3705:1;3666:38;:41::i;:::-;3647:60;;3779:1;3725:51;3759:6;3767:8;3725:33;:51::i;:::-;:55;3721:164;;;3831:8;3800:15;3816:11;3800:28;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3800:39:114;;;:28;;;;;;;;;;;:39;3857:13;;;;:::i;:::-;;;;3721:164;-1:-1:-1;3628:3:114;;3588:307;;;-1:-1:-1;3912:15:114;;2827:1107;-1:-1:-1;;;;;2827:1107:114:o;25966:457::-;2500:21:57;:19;:21::i;:::-;26265:9:114::1;26260:157;26280:20:::0;;::::1;26260:157;;;26321:85;26354:10;26366:9;;26376:1;26366:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26380:10;;26391:1;26380:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26395:7;;26403:1;26395:10;;;;;;;:::i;:::-;;;;;;;26321:32;:85::i;:::-;26302:3;;26260:157;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;25966:457:114;;;;;;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;26982:542:114:-;27081:7;27100:27;27130:31;27154:6;27130:23;:31::i;:::-;27100:61;;27171:26;27200:30;27223:6;27200:22;:30::i;:::-;27171:59;;27240:18;27278:9;27273:218;27297:10;:17;27293:1;:21;27273:218;;;27340:9;27335:146;27359:9;:16;27355:1;:20;27335:146;;;27414:52;27423:6;27431:5;27438:10;27449:1;27438:13;;;;;;;;:::i;:::-;;;;;;;27453:9;27463:1;27453:12;;;;;;;;:::i;:::-;;;;;;;27414:8;:52::i;:::-;27400:66;;;;:::i;:::-;;-1:-1:-1;27377:3:114;;27335:146;;;-1:-1:-1;27316:3:114;;27273:218;;;-1:-1:-1;27507:10:114;26982:542;-1:-1:-1;;;;;26982:542:114:o;27695:176::-;27788:7;27814:50;27830:6;27838:25;27856:6;27838:17;:25::i;9069:182::-;9148:7;9174:25;9192:6;9174:17;:25::i;:::-;:30;:70;;9211:29;9233:6;9211:21;:29::i;:::-;:33;;9243:1;9211:33;:::i;:::-;9174:70;;;9207:1;9167:77;9069:182;-1:-1:-1;;9069:182:114:o;25461:244::-;2500:21:57;:19;:21::i;:::-;25625:73:114::1;25658:10;25670:8;25680:9;25691:6;25625:32;:73::i;:::-;2542:20:57::0;1857:1;3068:7;:21;2888:208;13972:972:114;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;14448:304:114::2;14473:6;14633:42;14668:6;14633:34;:42::i;:::-;14689:9;14712:10;14736:6;14448:11;:304::i;:::-;14874:9;-1:-1:-1::0;;;;;14768:169:114::2;14818:42;14853:6;14818:34;:42::i;:::-;14768:169;::::0;;14897:10:::2;13473:51:143::0;;13555:2;13540:18;;13533:34;;;-1:-1:-1;;;;;14768:169:114;::::2;::::0;::::2;::::0;13446:18:143;14768:169:114::2;;;;;;;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;8661:180:114;8742:7;8768:25;8786:6;8768:17;:25::i;:::-;:30;:66;;8805:25;8823:6;8805:17;:25::i;10109:254::-;-1:-1:-1;;;;;10282:46:114;;;10256:7;10282:46;;;:38;:46;;;;;;;;:53;;;;;;;;;:64;;;;;;;;;;;:74;;;;;;;;;;;;10109:254::o;514:86:116:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;573:20:116::1;:18;:20::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13731:50:143;;5142:14:20;;13719:2:143;13704:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;514:86:116:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4699:1563:114:-;2500:21:57;:19;:21::i;:::-;4779:10:114::1;4762:14;4804:29:::0;;;:21:::1;:29;::::0;;;;;::::1;;4800:66;;;4842:24;;-1:-1:-1::0;;;4842:24:114::1;;;;;;;;;;;4800:66;-1:-1:-1::0;;;;;4876:29:114;::::1;;::::0;;;:21:::1;:29;::::0;;;;;;;:36;;-1:-1:-1;;4876:36:114::1;4908:4;4876:36:::0;;::::1;::::0;;;4938:29;;;;;;4931:41:::1;;;;:::i;:::-;5094:29;5116:6;5094:21;:29::i;:::-;-1:-1:-1::0;;;;;5054:37:114;::::1;;::::0;;;:29:::1;:37;::::0;;;;:69;;;;5134:1122:::1;-1:-1:-1::0;;;;;5158:35:114;::::1;;::::0;;;:27:::1;:35;::::0;;;;:44:::1;::::0;:42:::1;:44::i;:::-;5154:1;:48;5134:1122;;;-1:-1:-1::0;;;;;5242:35:114;::::1;5223:16;5242:35:::0;;;:27:::1;:35;::::0;;;;:41:::1;::::0;5281:1;5242:38:::1;:41::i;:::-;5223:60;;5303:9;5298:952;-1:-1:-1::0;;;;;5322:36:114;::::1;;::::0;;;:28:::1;:36;::::0;;;;:45:::1;::::0;:43:::1;:45::i;:::-;5318:1;:49;5298:952;;;-1:-1:-1::0;;;;;5412:36:114;::::1;5392:17;5412:36:::0;;;:28:::1;:36;::::0;;;;:42:::1;::::0;5452:1;5412:39:::1;:42::i;:::-;5392:62;;5531:21;5555:138;5585:6;5613:1;5636:9;5667:8;5555;:138::i;:::-;5531:162;;5907:1;5879:25;5897:6;5879:17;:25::i;:::-;:29;5875:365;;;5960:1;5932:25;5950:6;5932:17;:25::i;:::-;:29;5928:298;;;5985:222;6020:6;6052:25;6070:6;6052:17;:25::i;:::-;6103:9;6138:8;6172:13;5985:9;:222::i;:::-;-1:-1:-1::0;;5369:3:114::1;;5298:952;;;-1:-1:-1::0;;5204:3:114::1;;5134:1122;;;;4752:1510;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;4699:1563:114:o;9342:250::-;-1:-1:-1;;;;;9513:44:114;;;9487:7;9513:44;;;:36;:44;;;;;;;;:51;;;;;;;;;:62;;;;;;;;;;;:72;;;;;;;;;;;;9342:250::o;11173:230::-;11295:7;11333:63;11351:6;11359:25;11377:6;11359:17;:25::i;:::-;11386:9;11333:17;:63::i;9689:326::-;9828:7;9866:142;9892:6;9916:25;9934:6;9916:17;:25::i;:::-;9959:9;9986:8;9866;:142::i;19744:1588::-;2500:21:57;:19;:21::i;:::-;19955:9:114::1;19950:1376;19970:20:::0;;::::1;19950:1376;;;20238:20;20261:276;20287:180;20317:10;20349:31;20367:9;;20377:1;20367:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20349:31::-;20402:10;;20413:1;20402:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20437:9;;20447:1;20437:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20287:180::-;20485:38;20494:7;;20502:1;20494:10;;;;;;;:::i;:::-;;;;;;;20506:13;;20520:1;20506:16;;;;;;;:::i;:::-;;;;;;;20485:8;:38::i;:::-;20261:8;:276::i;:::-;20238:299;;20551:238;20601:4;20702:9;;20712:1;20702:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20732:10;;20743:1;20732:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20763:12;20551:24;:238::i;:::-;20948:189;20977:10;21005:29;21023:10;21005:17;:29::i;:::-;21052:10;;21063:1;21052:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21083:9;;21093:1;21083:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21113:7;;21121:1;21113:10;;;;;;;:::i;:::-;;;;;;;20948:11;:189::i;:::-;21152:163;21183:10;21211:29;21229:10;21211:17;:29::i;:::-;21258:10;;21269:1;21258:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21289:9;;21299:1;21289:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21152:13;:163::i;:::-;-1:-1:-1::0;19992:3:114::1;;19950:1376;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;19744:1588:114;;;;;;;;:::o;17307:108::-;17351:57;17366:10;17378:29;17396:10;17378:17;:29::i;:::-;17351:14;:57::i;12036:1885::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;12241:35:114;::::2;;::::0;;;:27:::2;:35;::::0;;;;:51:::2;::::0;12281:10:::2;12241:39;:51::i;:::-;-1:-1:-1::0;12666:21:114::2;12690:5:::0;;:30:::2;::::0;-1:-1:-1;;;12690:30:114;;12714:4:::2;12690:30;::::0;::::2;11540:51:143::0;-1:-1:-1;;;;;12690:5:114;;::::2;::::0;:15:::2;::::0;11513:18:143;;12690:30:114::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13009:57;::::0;-1:-1:-1;;;13009:57:114;;13032:10:::2;13009:57;::::0;::::2;14523:51:143::0;13052:4:114::2;14590:18:143::0;;;14583:60;14659:18;;;14652:34;;;12666:54:114;;-1:-1:-1;;;;;;13009:22:114;::::2;::::0;::::2;::::0;14496:18:143;;13009:57:114::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13199:22:114::2;13215:6:::0;13199:13;:22:::2;:::i;:::-;13165:5;::::0;:30:::2;::::0;-1:-1:-1;;;13165:30:114;;13189:4:::2;13165:30;::::0;::::2;11540:51:143::0;-1:-1:-1;;;;;13165:5:114;;::::2;::::0;:15:::2;::::0;11513:18:143;;13165:30:114::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;13161:114;;13242:33;;-1:-1:-1::0;;;13242:33:114::2;;;;;;;;;;;13161:114;13352:311;13375:6;13535:42;13570:6;13535:34;:42::i;:::-;13599:9;13623:10;13647:6;13352:9;:311::i;:::-;13850:9;-1:-1:-1::0;;;;;13738:176:114::2;13786:42;13821:6;13786:34;:42::i;:::-;13738:176;::::0;;13874:10:::2;13473:51:143::0;;13555:2;13540:18;;13533:34;;;-1:-1:-1;;;;;13738:176:114;::::2;::::0;::::2;::::0;13446:18:143;13738:176:114::2;;;;;;;12178:1743;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;1051:125:114;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;1115:30:114::1;:28;:30::i;:::-;1155:5;:14:::0;;-1:-1:-1;;;;;;1155:14:114::1;-1:-1:-1::0;;;;;1155:14:114;::::1;;::::0;;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13731:50:143;;5142:14:20;;13719:2:143;13704:18;5142:14:20;;;;;;;4092:1081;;;;;1051:125:114;:::o;1245:359::-;2500:21:57;:19;:21::i;:::-;1394:10:114::1;1377:14;1414:29:::0;;;:21:::1;:29;::::0;;;;:45;;;1470:128:::1;1490:21:::0;;::::1;1470:128;;;1532:55;1573:10;;1584:1;1573:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1532:36:114;::::1;;::::0;;;:28:::1;:36;::::0;;;;;:40:::1;:55::i;:::-;-1:-1:-1::0;1513:3:114::1;;1470:128;;;;1367:237;2542:20:57::0;1857:1;3068:7;:21;2888:208;5662:138:19;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;8002:226:114:-:0;-1:-1:-1;;;;;8093:29:114;;8070:7;8093:29;;;:21;:29;;;;;;:34;;8089:68;;8136:21;;-1:-1:-1;;;8136:21:114;;;;;;;;;;;8089:68;-1:-1:-1;;;;;8192:29:114;;;;;;:21;:29;;;;;;8174:47;;:15;:47;:::i;9090:115:67:-;9153:7;9179:19;9187:3;4556:18;;4474:107;9547:156;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2575:307:57;1899:1;2702:7;;:18;2698:86;;2743:30;;-1:-1:-1;;;2743:30:57;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;24467:315:114:-;24625:4;24603:10;:27;24595:59;;;;-1:-1:-1;;;24595:59:114;;15403:2:143;24595:59:114;;;15385:21:143;15442:2;15422:18;;;15415:30;-1:-1:-1;;;15461:18:143;;;15454:49;15520:18;;24595:59:114;15201:343:143;24595:59:114;24680:5;;-1:-1:-1;;;;;24672:27:114;;;24680:5;;24672:27;24664:59;;;;-1:-1:-1;;;24664:59:114;;15751:2:143;24664:59:114;;;15733:21:143;15790:2;15770:18;;;15763:30;-1:-1:-1;;;15809:18:143;;;15802:49;15868:18;;24664:59:114;15549:343:143;24664:59:114;24733:5;;:42;;-1:-1:-1;;;24733:42:114;;-1:-1:-1;;;;;14541:32:143;;;24733:42:114;;;14523:51:143;14610:32;;;14590:18;;;14583:60;14659:18;;;14652:34;;;24733:5:114;;;;:18;;14496::143;;24733:42:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4603:312:21:-;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;965:103:116;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;11558:32:143;;6518:60:21;;;11540:51:143;11513:18;;6518:60:21;11378:219:143;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1434:25:143;;;1407:18;;6317:34:21;1288:177:143;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;6945:261:114;-1:-1:-1;;;;;7115:46:114;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;;;:84;;7193:6;;7115:46;:84;;7193:6;;7115:84;:::i;:::-;;;;-1:-1:-1;;;;;;;6945:261:114:o;606:103:116:-;6931:20:20;:18;:20::i;:::-;672:30:116::1;:28;:30::i;6268:331:114:-:0;-1:-1:-1;;;;;6436:44:114;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6512:6;;6436:44;:82;;6512:6;;6436:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6528:36:114;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6586:6;;6528:36;:64;;6586:6;;6528:64;:::i;3371:111:64:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;21690:1458:114;21868:4;-1:-1:-1;;;;;21852:21:114;;;21848:1294;;21953:5;;-1:-1:-1;;;;;21945:27:114;;;21953:5;;21945:27;21941:413;;22068:67;22101:4;22107:8;22117:9;22128:6;22068:32;:67::i;:::-;21848:1294;;21941:413;22268:71;22305:4;22311:8;22321:9;22332:6;22268:36;:71::i;21848:1294::-;22752:5;;-1:-1:-1;;;;;22744:27:114;;;22752:5;;22744:27;22740:392;;22863:67;22896:4;22902:8;22912:9;22923:6;22863:32;:67::i;22740:392::-;23046:71;23083:4;23089:8;23099:9;23110:6;23046:36;:71::i;17722:796::-;17967:5;17945:19;18006:108;18028:6;17967:5;18073:9;18096:8;18006;:108::i;:::-;17982:132;;18223:6;18207:13;:22;18203:309;;;18245:163;18275:6;18299:11;18328:9;18355:8;18381:13;18245:12;:163::i;:::-;18203:309;;;18439:62;18452:6;18460:11;18473:9;18484:8;18494:6;18439:12;:62::i;:::-;17882:636;;17722:796;;;;;:::o;18850:888::-;19057:21;19081:102;19103:6;19123:5;19142:9;19165:8;19081;:102::i;:::-;19057:126;-1:-1:-1;19193:19:114;19215:9;:5;19223:1;19215:9;:::i;:::-;19193:31;;19234:23;19260:110;19284:6;19304:11;19329:9;19352:8;19260:10;:110::i;:::-;19234:136;;19403:13;19385:15;:31;19381:351;;;-1:-1:-1;;;;;7652:46:114;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;:83;;;19559:162;7482:260;16491:810;16720:9;16715:423;-1:-1:-1;;;;;16739:35:114;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;16735:1;:48;16715:423;;;-1:-1:-1;;;;;16823:35:114;;16804:16;16823:35;;;:27;:35;;;;;:41;;16862:1;16823:38;:41::i;:::-;16804:60;;16884:9;16879:249;-1:-1:-1;;;;;16903:36:114;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;16899:1;:49;16879:249;;;-1:-1:-1;;;;;16993:36:114;;16973:17;16993:36;;;:28;:36;;;;;:42;;17033:1;16993:39;:42::i;:::-;16973:62;;17054:59;17072:6;17080:11;17093:9;17104:8;17054:17;:59::i;:::-;-1:-1:-1;16950:3:114;;16879:249;;;-1:-1:-1;;16785:3:114;;16715:423;;;-1:-1:-1;17227:15:114;:11;17241:1;17227:15;:::i;:::-;-1:-1:-1;;;;;17187:37:114;;;;;;:29;:37;;;;;;;:55;;;;17258:36;;;;;;17282:11;1434:25:143;;1422:2;1407:18;;1288:177;17258:36:114;;;;;;;;16491:810;;:::o;8289:150:67:-;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:67;;8382:4;:50::i;715:125:116:-;6931:20:20;:18;:20::i;:::-;791:42:116::1;2362:4:19;822:10:116;791;:42::i;4923:118:67:-:0;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;13491:32:143;;4514:47:19;;;13473:51:143;13540:18;;;13533:34;;;13446:18;;4514:47:19;13299:274:143;2264:344:40;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;23282:313:114;-1:-1:-1;;;;;23418:21:114;;23434:4;23418:21;23410:67;;;;-1:-1:-1;;;23410:67:114;;16567:2:143;23410:67:114;;;16549:21:143;16606:2;16586:18;;;16579:30;16645:34;16625:18;;;16618:62;-1:-1:-1;;;16696:18:143;;;16689:31;16737:19;;23410:67:114;16365:397:143;23410:67:114;23503:5;;-1:-1:-1;;;;;23495:27:114;;;23503:5;;23495:27;23487:59;;;;-1:-1:-1;;;23487:59:114;;15751:2:143;23487:59:114;;;15733:21:143;15790:2;15770:18;;;15763:30;-1:-1:-1;;;15809:18:143;;;15802:49;15868:18;;23487:59:114;15549:343:143;23487:59:114;23556:5;;:32;;-1:-1:-1;;;23556:32:114;;-1:-1:-1;;;;;13491:32:143;;;23556::114;;;13473:51:143;13540:18;;;13533:34;;;23556:5:114;;;;:14;;13446:18:143;;23556:32:114;13299:274:143;23664:394:114;-1:-1:-1;;;;;23804:21:114;;23820:4;23804:21;23796:67;;;;-1:-1:-1;;;23796:67:114;;16969:2:143;23796:67:114;;;16951:21:143;17008:2;16988:18;;;16981:30;17047:34;17027:18;;;17020:62;-1:-1:-1;;;17098:18:143;;;17091:31;17139:19;;23796:67:114;16767:397:143;23796:67:114;23889:5;;-1:-1:-1;;;;;23881:27:114;;;23889:5;;23881:27;23873:64;;;;-1:-1:-1;;;23873:64:114;;17371:2:143;23873:64:114;;;17353:21:143;17410:2;17390:18;;;17383:30;-1:-1:-1;;;17429:18:143;;;17422:54;17493:18;;23873:64:114;17169:348:143;23873:64:114;23947:5;;:32;;-1:-1:-1;;;23947:32:114;;-1:-1:-1;;;;;13491:32:143;;;23947::114;;;13473:51:143;13540:18;;;13533:34;;;23947:5:114;;;;:13;;13446:18:143;;23947:32:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23989:62:114;;-1:-1:-1;;;23989:62:114;;-1:-1:-1;;;;;13491:32:143;;;23989:62:114;;;13473:51:143;13540:18;;;13533:34;;;23989:44:114;;;;;13446:18:143;;23989:62:114;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24859:354;25021:4;24999:10;:27;24991:59;;;;-1:-1:-1;;;24991:59:114;;15403:2:143;24991:59:114;;;15385:21:143;15442:2;15422:18;;;15415:30;-1:-1:-1;;;15461:18:143;;;15454:49;15520:18;;24991:59:114;15201:343:143;24991:59:114;25076:5;;-1:-1:-1;;;;;25068:27:114;;;25076:5;;25068:27;25060:64;;;;-1:-1:-1;;;25060:64:114;;17371:2:143;25060:64:114;;;17353:21:143;17410:2;17390:18;;;17383:30;-1:-1:-1;;;17429:18:143;;;17422:54;17493:18;;25060:64:114;17169:348:143;25060:64:114;25134:72;;-1:-1:-1;;;25134:72:114;;-1:-1:-1;;;;;14541:32:143;;;25134:72:114;;;14523:51:143;14610:32;;;14590:18;;;14583:60;14659:18;;;14652:34;;;25134:48:114;;;;;14496:18:143;;25134:72:114;14321:371:143;6605:334:114;-1:-1:-1;;;;;6776:44:114;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6852:6;;6776:44;:82;;6852:6;;6776:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6868:36:114;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6926:6;;6868:36;:64;;6926:6;;6868:64;:::i;15011:1474::-;15265:19;15287:108;15309:6;15329:11;15354:9;15377:8;15287;:108::i;:::-;15265:130;-1:-1:-1;15405:21:114;15429:114;15453:6;15473:15;:11;15487:1;15473:15;:::i;:::-;15502:9;15525:8;15429:10;:114::i;:::-;15405:138;;15573:11;15557:13;:27;15553:85;;;-1:-1:-1;15616:11:114;15553:85;15647:17;15667:27;15681:13;15667:11;:27;:::i;:::-;15647:47;-1:-1:-1;15705:66:114;15715:6;15723:15;:11;15737:1;15723:15;:::i;:::-;15740:9;15751:8;15761:9;15705;:66::i;:::-;16181:17;;16177:131;;16214:83;16255:4;16262:8;16272:9;16283:13;16214:32;:83::i;:::-;16407:9;-1:-1:-1;;;;;16323:155:114;16382:11;16360:8;-1:-1:-1;;;;;16323:155:114;;16430:11;16455:13;16323:155;;;;;;17829:25:143;;;17885:2;17870:18;;17863:34;17817:2;17802:18;;17655:248;16323:155:114;;;;;;;;15159:1326;;;15011:1474;;;;:::o;2241:406:67:-;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:67;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:67;2618:12;;1671:281:40;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;11558:32:143;;1805:47:40;;;11540:51:143;11513:18;;1805:47:40;11378:219:143;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;11558:32:143;;4933:24:53;;;11540:51:143;11513:18;;4933:24:53;11378:219:143;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:143;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:143;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:143;;562:42;;552:70;;618:1;615;608:12;633:650;719:6;727;735;743;796:3;784:9;775:7;771:23;767:33;764:53;;;813:1;810;803:12;764:53;852:9;839:23;871:31;896:5;871:31;:::i;:::-;921:5;-1:-1:-1;999:2:143;984:18;;971:32;;-1:-1:-1;1081:2:143;1066:18;;1053:32;1094:33;1053:32;1094:33;:::i;:::-;1146:7;-1:-1:-1;1205:2:143;1190:18;;1177:32;1218:33;1177:32;1218:33;:::i;:::-;633:650;;;;-1:-1:-1;633:650:143;;-1:-1:-1;;633:650:143:o;1470:508::-;1547:6;1555;1563;1616:2;1604:9;1595:7;1591:23;1587:32;1584:52;;;1632:1;1629;1622:12;1584:52;1671:9;1658:23;1690:31;1715:5;1690:31;:::i;:::-;1740:5;-1:-1:-1;1818:2:143;1803:18;;1790:32;;-1:-1:-1;1900:2:143;1885:18;;1872:32;1913:33;1872:32;1913:33;:::i;:::-;1965:7;1955:17;;;1470:508;;;;;:::o;1983:247::-;2042:6;2095:2;2083:9;2074:7;2070:23;2066:32;2063:52;;;2111:1;2108;2101:12;2063:52;2150:9;2137:23;2169:31;2194:5;2169:31;:::i;2235:637::-;2425:2;2437:21;;;2507:13;;2410:18;;;2529:22;;;2377:4;;2608:15;;;2582:2;2567:18;;;2377:4;2651:195;2665:6;2662:1;2659:13;2651:195;;;2730:13;;-1:-1:-1;;;;;2726:39:143;2714:52;;2795:2;2821:15;;;;2786:12;;;;2762:1;2680:9;2651:195;;2877:367;2945:6;2953;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;3061:9;3048:23;3080:31;3105:5;3080:31;:::i;:::-;3130:5;3208:2;3193:18;;;;3180:32;;-1:-1:-1;;;2877:367:143:o;3249:226::-;3308:6;3361:2;3349:9;3340:7;3336:23;3332:32;3329:52;;;3377:1;3374;3367:12;3329:52;-1:-1:-1;3422:23:143;;3249:226;-1:-1:-1;3249:226:143:o;3662:367::-;3730:6;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3852:23;;;-1:-1:-1;3951:2:143;3936:18;;3923:32;3964:33;3923:32;3964:33;:::i;:::-;4016:7;4006:17;;;3662:367;;;;;:::o;4034:529::-;4111:6;4119;4127;4180:2;4168:9;4159:7;4155:23;4151:32;4148:52;;;4196:1;4193;4186:12;4148:52;4235:9;4222:23;4254:31;4279:5;4254:31;:::i;:::-;4304:5;-1:-1:-1;4361:2:143;4346:18;;4333:32;4374:33;4333:32;4374:33;:::i;:::-;4426:7;-1:-1:-1;4485:2:143;4470:18;;4457:32;4498:33;4457:32;4498:33;:::i;4568:388::-;4636:6;4644;4697:2;4685:9;4676:7;4672:23;4668:32;4665:52;;;4713:1;4710;4703:12;4665:52;4752:9;4739:23;4771:31;4796:5;4771:31;:::i;:::-;4821:5;-1:-1:-1;4878:2:143;4863:18;;4850:32;4891:33;4850:32;4891:33;:::i;4961:367::-;5024:8;5034:6;5088:3;5081:4;5073:6;5069:17;5065:27;5055:55;;5106:1;5103;5096:12;5055:55;-1:-1:-1;5129:20:143;;-1:-1:-1;;;;;5161:30:143;;5158:50;;;5204:1;5201;5194:12;5158:50;5241:4;5233:6;5229:17;5217:29;;5301:3;5294:4;5284:6;5281:1;5277:14;5269:6;5265:27;5261:38;5258:47;5255:67;;;5318:1;5315;5308:12;5255:67;4961:367;;;;;:::o;5333:1099::-;5491:6;5499;5507;5515;5523;5531;5584:2;5572:9;5563:7;5559:23;5555:32;5552:52;;;5600:1;5597;5590:12;5552:52;5640:9;5627:23;-1:-1:-1;;;;;5665:6:143;5662:30;5659:50;;;5705:1;5702;5695:12;5659:50;5744:70;5806:7;5797:6;5786:9;5782:22;5744:70;:::i;:::-;5833:8;;-1:-1:-1;5718:96:143;-1:-1:-1;;5921:2:143;5906:18;;5893:32;-1:-1:-1;;;;;5937:32:143;;5934:52;;;5982:1;5979;5972:12;5934:52;6021:72;6085:7;6074:8;6063:9;6059:24;6021:72;:::i;:::-;6112:8;;-1:-1:-1;5995:98:143;-1:-1:-1;;6200:2:143;6185:18;;6172:32;-1:-1:-1;;;;;6216:32:143;;6213:52;;;6261:1;6258;6251:12;6213:52;6300:72;6364:7;6353:8;6342:9;6338:24;6300:72;:::i;:::-;5333:1099;;;;-1:-1:-1;5333:1099:143;;-1:-1:-1;5333:1099:143;;6391:8;;5333:1099;-1:-1:-1;;;5333:1099:143:o;6437:127::-;6498:10;6493:3;6489:20;6486:1;6479:31;6529:4;6526:1;6519:15;6553:4;6550:1;6543:15;6569:1079;6646:6;6654;6707:2;6695:9;6686:7;6682:23;6678:32;6675:52;;;6723:1;6720;6713:12;6675:52;6762:9;6749:23;6781:31;6806:5;6781:31;:::i;:::-;6831:5;-1:-1:-1;6887:2:143;6872:18;;6859:32;-1:-1:-1;;;;;6903:30:143;;6900:50;;;6946:1;6943;6936:12;6900:50;6969:22;;7022:4;7014:13;;7010:27;-1:-1:-1;7000:55:143;;7051:1;7048;7041:12;7000:55;7091:2;7078:16;-1:-1:-1;;;;;7109:6:143;7106:30;7103:56;;;7139:18;;:::i;:::-;7188:2;7182:9;7280:2;7242:17;;-1:-1:-1;;7238:31:143;;;7271:2;7234:40;7230:54;7218:67;;-1:-1:-1;;;;;7300:34:143;;7336:22;;;7297:62;7294:88;;;7362:18;;:::i;:::-;7398:2;7391:22;7422;;;7463:15;;;7480:2;7459:24;7456:37;-1:-1:-1;7453:57:143;;;7506:1;7503;7496:12;7453:57;7562:6;7557:2;7553;7549:11;7544:2;7536:6;7532:15;7519:50;7615:1;7610:2;7601:6;7593;7589:19;7585:28;7578:39;7636:6;7626:16;;;;;6569:1079;;;;;:::o;7653:508::-;7730:6;7738;7746;7799:2;7787:9;7778:7;7774:23;7770:32;7767:52;;;7815:1;7812;7805:12;7767:52;7854:9;7841:23;7873:31;7898:5;7873:31;:::i;:::-;7923:5;-1:-1:-1;7980:2:143;7965:18;;7952:32;7993:33;7952:32;7993:33;:::i;:::-;7653:508;;8045:7;;-1:-1:-1;;;8125:2:143;8110:18;;;;8097:32;;7653:508::o;8166:1431::-;8360:6;8368;8376;8384;8392;8400;8408;8416;8469:3;8457:9;8448:7;8444:23;8440:33;8437:53;;;8486:1;8483;8476:12;8437:53;8526:9;8513:23;-1:-1:-1;;;;;8551:6:143;8548:30;8545:50;;;8591:1;8588;8581:12;8545:50;8630:70;8692:7;8683:6;8672:9;8668:22;8630:70;:::i;:::-;8719:8;;-1:-1:-1;8604:96:143;-1:-1:-1;;8807:2:143;8792:18;;8779:32;-1:-1:-1;;;;;8823:32:143;;8820:52;;;8868:1;8865;8858:12;8820:52;8907:72;8971:7;8960:8;8949:9;8945:24;8907:72;:::i;:::-;8998:8;;-1:-1:-1;8881:98:143;-1:-1:-1;;9086:2:143;9071:18;;9058:32;-1:-1:-1;;;;;9102:32:143;;9099:52;;;9147:1;9144;9137:12;9099:52;9186:72;9250:7;9239:8;9228:9;9224:24;9186:72;:::i;:::-;9277:8;;-1:-1:-1;9160:98:143;-1:-1:-1;;9365:2:143;9350:18;;9337:32;-1:-1:-1;;;;;9381:32:143;;9378:52;;;9426:1;9423;9416:12;9378:52;9465:72;9529:7;9518:8;9507:9;9503:24;9465:72;:::i;:::-;8166:1431;;;;-1:-1:-1;8166:1431:143;;-1:-1:-1;8166:1431:143;;;;;;9556:8;-1:-1:-1;;;8166:1431:143:o;9602:418::-;9751:2;9740:9;9733:21;9714:4;9783:6;9777:13;9826:6;9821:2;9810:9;9806:18;9799:34;9885:6;9880:2;9872:6;9868:15;9863:2;9852:9;9848:18;9842:50;9941:1;9936:2;9927:6;9916:9;9912:22;9908:31;9901:42;10011:2;10004;10000:7;9995:2;9987:6;9983:15;9979:29;9968:9;9964:45;9960:54;9952:62;;;9602:418;;;;:::o;10822:551::-;10917:6;10925;10933;10986:2;10974:9;10965:7;10961:23;10957:32;10954:52;;;11002:1;10999;10992:12;10954:52;11047:23;;;-1:-1:-1;11145:2:143;11130:18;;11117:32;-1:-1:-1;;;;;11161:30:143;;11158:50;;;11204:1;11201;11194:12;11158:50;11243:70;11305:7;11296:6;11285:9;11281:22;11243:70;:::i;:::-;10822:551;;11332:8;;-1:-1:-1;11217:96:143;;-1:-1:-1;;;;10822:551:143:o;11602:127::-;11663:10;11658:3;11654:20;11651:1;11644:31;11694:4;11691:1;11684:15;11718:4;11715:1;11708:15;12897:127;12958:10;12953:3;12949:20;12946:1;12939:31;12989:4;12986:1;12979:15;13013:4;13010:1;13003:15;13029:125;13094:9;;;13115:10;;;13112:36;;;13128:18;;:::i;13159:135::-;13198:3;13219:17;;;13216:43;;13239:18;;:::i;:::-;-1:-1:-1;13286:1:143;13275:13;;13159:135::o;13792:127::-;13853:10;13848:3;13844:20;13841:1;13834:31;13884:4;13881:1;13874:15;13908:4;13905:1;13898:15;14132:184;14202:6;14255:2;14243:9;14234:7;14230:23;14226:32;14223:52;;;14271:1;14268;14261:12;14223:52;-1:-1:-1;14294:16:143;;14132:184;-1:-1:-1;14132:184:143:o;14697:277::-;14764:6;14817:2;14805:9;14796:7;14792:23;14788:32;14785:52;;;14833:1;14830;14823:12;14785:52;14865:9;14859:16;14918:5;14911:13;14904:21;14897:5;14894:32;14884:60;;14940:1;14937;14930:12;14979:217;15019:1;15045;15035:132;;15089:10;15084:3;15080:20;15077:1;15070:31;15124:4;15121:1;15114:15;15152:4;15149:1;15142:15;15035:132;-1:-1:-1;15181:9:143;;14979:217::o;17522:128::-;17589:9;;;17610:11;;;17607:37;;;17624:18;;:::i;17908:301::-;18037:3;18075:6;18069:13;18121:6;18114:4;18106:6;18102:17;18097:3;18091:37;18183:1;18147:16;;18172:13;;;-1:-1:-1;18147:16:143;17908:301;-1:-1:-1;17908:301:143:o","linkReferences":{},"immutableReferences":{"39722":[{"start":7811,"length":32},{"start":7852,"length":32},{"start":8173,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WHITELIST_ROLE()":"7a997ab7","acceptGenesisCeremony()":"92a2ebf3","computeAllStake(address,uint256)":"55bdbe4c","computeAllStakeForAcceptingEpoch(address)":"574663a9","currentAcceptingEpochByDomain(address)":"b1de97f7","domainGenesisAccepted(address)":"d1ba90ff","epochDurationByDomain(address)":"3bccf635","getAcceptingEpoch(address)":"22fceb75","getAttesterStake(address,uint256,address)":"24fdfddf","getAttesterStakeForAcceptingEpoch(address,address)":"3debeadc","getCustodianStake(address,uint256,address)":"0ce52af5","getCustodianStakeForAcceptingEpoch(address,address)":"9db92f68","getEpochByL1BlockTime(address)":"d980b40d","getEpochDuration(address)":"5c534359","getNextAcceptingEpochWithException(address)":"771fcfc4","getNextPresentEpochWithException(address)":"57dd6a94","getRegisteredAttesters(address)":"1789aeb4","getRegisteredCustodians(address)":"341d5ef5","getRoleAdmin(bytes32)":"248a9ca3","getStake(address,uint256,address,address)":"93dfb85c","getStakeForAcceptingEpoch(address,address,address)":"a78d1fef","getStakedAttestersForAcceptingEpoch(address)":"4234a479","getUnstake(address,uint256,address,address)":"7d93768b","getUnstakeForAcceptingEpoch(address,address,address)":"34eada3a","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address)":"c4d66de8","proxiableUUID()":"52d1902d","registerDomain(uint256,address[])":"d37304f8","removeAddressFromWhitelist(address)":"286dd3f5","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardArray(address[],uint256[],address[])":"4e76a139","rewardFromDomain(address,uint256,address)":"5e00bf46","rollOverEpoch()":"a887b71c","setAcceptingEpoch(address,uint256)":"1dc8b949","slash(address[],address[],uint256[],uint256[])":"a885c975","stake(address,address,uint256)":"bf6eac2f","stakesByDomainEpochCustodian(address,uint256,address)":"86af70d1","stakesByDomainEpochCustodianAttester(address,uint256,address,address)":"0c8f522f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","unstake(address,address,uint256)":"60829f8a","unstakesByDomainEpochCustodianAttester(address,uint256,address,address)":"e6e3fb3a","upgradeToAndCall(address,bytes)":"4f1ef286","whitelistAddress(address)":"41566585"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodianTransferAmountMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EpochDurationNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisAlreadyAccepted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakeExceedsGenesisStake\",\"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\":\"attester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstake\",\"type\":\"uint256\"}],\"name\":\"AttesterEpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"EpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"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\":[],\"name\":\"WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"computeAllStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"computeAllStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"currentAcceptingEpochByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentAcceptingEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"domainGenesisAccepted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"epochDurationByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochByL1BlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextPresentEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredAttesters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredCustodians\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"registerDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"removeAddressFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"rewardArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"rewardFromDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollOverEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"}],\"name\":\"slash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodian\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"unstakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"whitelistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"computeAllStakeForAcceptingEpoch(address)\":{\"params\":{\"domain\":\"The domain to compute total stake for\"}},\"getCustodianStake(address,uint256,address)\":{\"details\":\"gets the total stake for a given epoch for a given custodian\"},\"getCustodianStakeForAcceptingEpoch(address,address)\":{\"details\":\"gets the total stake for the accepting epoch for a given custodian\"},\"getNextAcceptingEpochWithException(address)\":{\"details\":\"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getNextPresentEpochWithException(address)\":{\"details\":\"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getStake(address,uint256,address,address)\":{\"details\":\"gets the stake for a given epoch for a given {attester,custodian} tuple\"},\"getStakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the stake for the accepting epoch for a given {attester,custodian} tuple\"},\"getUnstake(address,uint256,address,address)\":{\"details\":\"gets the unstake for a given epoch for a given {attester,custodian} tuple\"},\"getUnstakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the unstake for the accepting epoch for a given {attester,custodian} tuple\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"rewardArray(address[],uint256[],address[])\":{\"params\":{\"amounts\":\"The amounts to reward\",\"attesters\":\"The attesters to reward\",\"custodians\":\"The custodians of the token from which to reward the attesters \"}},\"rewardFromDomain(address,uint256,address)\":{\"params\":{\"amount\":\"The amount to reward\",\"attester\":\"The attester to reward\",\"custodian\":\"The custodian of the token from which to reward the attester, here it is the domain\"}},\"setAcceptingEpoch(address,uint256)\":{\"params\":{\"domain\":\"The domain address\",\"newEpoch\":\"The new accepting epoch value\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"EpochDurationNotSet()\":[{\"notice\":\"Error thrown when trying to get epoch but duration not set\"}]},\"kind\":\"user\",\"methods\":{\"computeAllStake(address,uint256)\":{\"notice\":\"Computes total stake across all custodians and attesters for an epoch\"},\"computeAllStakeForAcceptingEpoch(address)\":{\"notice\":\"Computes total stake across all custodians and attesters for the current accepting epoch\"},\"getEpochDuration(address)\":{\"notice\":\"Gets the epoch duration for the given domain\"},\"getNextAcceptingEpochWithException(address)\":{\"notice\":\"Gets the next accepting epoch number\"},\"getNextPresentEpochWithException(address)\":{\"notice\":\"Gets the next present epoch number\"},\"getRegisteredAttesters(address)\":{\"notice\":\"Gets all attesters who are registered for the given domain\"},\"getRegisteredCustodians(address)\":{\"notice\":\"Gets all custodians who are registered for the given domain\"},\"getStakedAttestersForAcceptingEpoch(address)\":{\"notice\":\"Gets all attesters who have stake in the current accepting epoch\"},\"registerDomain(uint256,address[])\":{\"notice\":\"Registers a domain and sets the epoch duration\"},\"rewardArray(address[],uint256[],address[])\":{\"notice\":\"An array of custodians reward an array of attesters\"},\"rewardFromDomain(address,uint256,address)\":{\"notice\":\"Domain rewards an attester\"},\"setAcceptingEpoch(address,uint256)\":{\"notice\":\"Sets the accepting epoch for a given domain\"},\"stake(address,address,uint256)\":{\"notice\":\"Stakes for the next epoch\"},\"whitelistAddress(address)\":{\"notice\":\"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MovementStaking.sol\":\"MovementStaking\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CustodianTransferAmountMismatch"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EpochDurationNotSet"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisAlreadyAccepted"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"StakeExceedsGenesisStake"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstake","type":"uint256","indexed":false}],"type":"event","name":"AttesterEpochRolledOver","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterStaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterUnstaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false}],"type":"event","name":"EpochRolledOver","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"computeAllStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"computeAllStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"currentAcceptingEpochByDomain","outputs":[{"internalType":"uint256","name":"currentAcceptingEpoch","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"domainGenesisAccepted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"epochDurationByDomain","outputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochByL1BlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextPresentEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredAttesters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredCustodians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"registerDomain"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAddressFromWhitelist"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"rewardArray"},{"inputs":[{"internalType":"address","name":"attester","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"rewardFromDomain"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"rollOverEpoch"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"address[]","name":"custodians","type":"address[]"},{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"refundAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"slash"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"contract IERC20","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"stake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodian","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unstake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"unstakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelistAddress"}],"devdoc":{"kind":"dev","methods":{"computeAllStakeForAcceptingEpoch(address)":{"params":{"domain":"The domain to compute total stake for"}},"getCustodianStake(address,uint256,address)":{"details":"gets the total stake for a given epoch for a given custodian"},"getCustodianStakeForAcceptingEpoch(address,address)":{"details":"gets the total stake for the accepting epoch for a given custodian"},"getNextAcceptingEpochWithException(address)":{"details":"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getNextPresentEpochWithException(address)":{"details":"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getStake(address,uint256,address,address)":{"details":"gets the stake for a given epoch for a given {attester,custodian} tuple"},"getStakeForAcceptingEpoch(address,address,address)":{"details":"gets the stake for the accepting epoch for a given {attester,custodian} tuple"},"getUnstake(address,uint256,address,address)":{"details":"gets the unstake for a given epoch for a given {attester,custodian} tuple"},"getUnstakeForAcceptingEpoch(address,address,address)":{"details":"gets the unstake for the accepting epoch for a given {attester,custodian} tuple"},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"rewardArray(address[],uint256[],address[])":{"params":{"amounts":"The amounts to reward","attesters":"The attesters to reward","custodians":"The custodians of the token from which to reward the attesters "}},"rewardFromDomain(address,uint256,address)":{"params":{"amount":"The amount to reward","attester":"The attester to reward","custodian":"The custodian of the token from which to reward the attester, here it is the domain"}},"setAcceptingEpoch(address,uint256)":{"params":{"domain":"The domain address","newEpoch":"The new accepting epoch value"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"computeAllStake(address,uint256)":{"notice":"Computes total stake across all custodians and attesters for an epoch"},"computeAllStakeForAcceptingEpoch(address)":{"notice":"Computes total stake across all custodians and attesters for the current accepting epoch"},"getEpochDuration(address)":{"notice":"Gets the epoch duration for the given domain"},"getNextAcceptingEpochWithException(address)":{"notice":"Gets the next accepting epoch number"},"getNextPresentEpochWithException(address)":{"notice":"Gets the next present epoch number"},"getRegisteredAttesters(address)":{"notice":"Gets all attesters who are registered for the given domain"},"getRegisteredCustodians(address)":{"notice":"Gets all custodians who are registered for the given domain"},"getStakedAttestersForAcceptingEpoch(address)":{"notice":"Gets all attesters who have stake in the current accepting epoch"},"registerDomain(uint256,address[])":{"notice":"Registers a domain and sets the epoch duration"},"rewardArray(address[],uint256[],address[])":{"notice":"An array of custodians reward an array of attesters"},"rewardFromDomain(address,uint256,address)":{"notice":"Domain rewards an attester"},"setAcceptingEpoch(address,uint256)":{"notice":"Sets the accepting epoch for a given domain"},"stake(address,address,uint256)":{"notice":"Stakes for the next epoch"},"whitelistAddress(address)":{"notice":"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/staking/MovementStaking.sol":"MovementStaking"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":62398,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"token","offset":0,"slot":"0","type":"t_contract(IERC20)43804"},{"astId":62403,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"epochDurationByDomain","offset":0,"slot":"1","type":"t_mapping(t_address,t_uint256)"},{"astId":62408,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"currentAcceptingEpochByDomain","offset":0,"slot":"2","type":"t_mapping(t_address,t_uint256)"},{"astId":62413,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"registeredAttestersByDomain","offset":0,"slot":"3","type":"t_mapping(t_address,t_struct(AddressSet)50376_storage)"},{"astId":62418,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"registeredCustodiansByDomain","offset":0,"slot":"4","type":"t_mapping(t_address,t_struct(AddressSet)50376_storage)"},{"astId":62429,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"stakesByDomainEpochCustodianAttester","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256))))"},{"astId":62440,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"unstakesByDomainEpochCustodianAttester","offset":0,"slot":"6","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256))))"},{"astId":62449,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"stakesByDomainEpochCustodian","offset":0,"slot":"7","type":"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))"},{"astId":62453,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"domainGenesisAccepted","offset":0,"slot":"8","type":"t_mapping(t_address,t_bool)"},{"astId":44695,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_status","offset":0,"slot":"9","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_bytes32)dyn_storage":{"encoding":"dynamic_array","label":"bytes32[]","numberOfBytes":"32","base":"t_bytes32"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(IERC20)43804":{"encoding":"inplace","label":"contract IERC20","numberOfBytes":"20"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256))))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256)))"},"t_mapping(t_address,t_mapping(t_uint256,t_mapping(t_address,t_uint256)))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(uint256 => mapping(address => uint256)))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},"t_mapping(t_address,t_struct(AddressSet)50376_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct EnumerableSet.AddressSet)","numberOfBytes":"32","value":"t_struct(AddressSet)50376_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_uint256)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_mapping(t_address,t_mapping(t_address,t_uint256)))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => mapping(address => uint256)))","numberOfBytes":"32","value":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_struct(AddressSet)50376_storage":{"encoding":"inplace","label":"struct EnumerableSet.AddressSet","numberOfBytes":"64","members":[{"astId":50375,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_inner","offset":0,"slot":"0","type":"t_struct(Set)50061_storage"}]},"t_struct(Set)50061_storage":{"encoding":"inplace","label":"struct EnumerableSet.Set","numberOfBytes":"64","members":[{"astId":50056,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_values","offset":0,"slot":"0","type":"t_array(t_bytes32)dyn_storage"},{"astId":50060,"contract":"src/staking/MovementStaking.sol:MovementStaking","label":"_positions","offset":0,"slot":"1","type":"t_mapping(t_bytes32,t_uint256)"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/staking/MovementStaking.sol","id":62380,"exportedSymbols":{"Address":[44580],"BaseStaking":[62514],"EnumerableSet":[50663],"ICustodianToken":[63461],"IERC20":[43804],"IMovementStaking":[62796],"Math":[48141],"MovementStaking":[62379],"MovementStakingStorage":[62459],"ReentrancyGuard":[44753],"SafeERC20":[44275]},"nodeType":"SourceUnit","src":"39:27836:114","nodes":[{"id":60527,"nodeType":"PragmaDirective","src":"39:24:114","nodes":[],"literals":["solidity","^","0.8",".13"]},{"id":60529,"nodeType":"ImportDirective","src":"64:51:114","nodes":[],"absolutePath":"src/staking/base/BaseStaking.sol","file":"./base/BaseStaking.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":62515,"symbolAliases":[{"foreign":{"id":60528,"name":"BaseStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62514,"src":"72:11:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60531,"nodeType":"ImportDirective","src":"116:82:114","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":44276,"symbolAliases":[{"foreign":{"id":60530,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44275,"src":"124:9:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60533,"nodeType":"ImportDirective","src":"199:69:114","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol","file":"@openzeppelin/contracts/interfaces/IERC20.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":42870,"symbolAliases":[{"foreign":{"id":60532,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43804,"src":"207:6:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60535,"nodeType":"ImportDirective","src":"269:66:114","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":44581,"symbolAliases":[{"foreign":{"id":60534,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44580,"src":"277:7:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60537,"nodeType":"ImportDirective","src":"336:70:114","nodes":[],"absolutePath":"src/token/custodian/CustodianToken.sol","file":"../token/custodian/CustodianToken.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":63797,"symbolAliases":[{"foreign":{"id":60536,"name":"ICustodianToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63461,"src":"344:15:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60539,"nodeType":"ImportDirective","src":"407:65:114","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/math/Math.sol","file":"@openzeppelin/contracts/utils/math/Math.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":48142,"symbolAliases":[{"foreign":{"id":60538,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48141,"src":"415:4:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60542,"nodeType":"ImportDirective","src":"473:83:114","nodes":[],"absolutePath":"src/staking/MovementStakingStorage.sol","file":"./MovementStakingStorage.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":62460,"symbolAliases":[{"foreign":{"id":60540,"name":"MovementStakingStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62459,"src":"481:22:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":60541,"name":"EnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50663,"src":"505:13:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60544,"nodeType":"ImportDirective","src":"557:67:114","nodes":[],"absolutePath":"src/staking/interfaces/IMovementStaking.sol","file":"./interfaces/IMovementStaking.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":62797,"symbolAliases":[{"foreign":{"id":60543,"name":"IMovementStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62796,"src":"565:16:114","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":60545,"nodeType":"ImportDirective","src":"625:59:114","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","nameLocation":"-1:-1:-1","scope":62380,"sourceUnit":44754,"symbolAliases":[],"unitAlias":""},{"id":62379,"nodeType":"ContractDefinition","src":"766:27108:114","nodes":[{"id":60557,"nodeType":"UsingForDirective","src":"887:49:114","nodes":[],"global":false,"libraryName":{"id":60554,"name":"EnumerableSet","nameLocations":["893:13:114"],"nodeType":"IdentifierPath","referencedDeclaration":50663,"src":"893:13:114"},"typeName":{"id":60556,"nodeType":"UserDefinedTypeName","pathNode":{"id":60555,"name":"EnumerableSet.AddressSet","nameLocations":["911:13:114","925:10:114"],"nodeType":"IdentifierPath","referencedDeclaration":50376,"src":"911:24:114"},"referencedDeclaration":50376,"src":"911:24:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage_ptr","typeString":"struct EnumerableSet.AddressSet"}}},{"id":60560,"nodeType":"ErrorDefinition","src":"1017:28:114","nodes":[],"documentation":{"id":60558,"nodeType":"StructuredDocumentation","src":"942:70:114","text":"@notice Error thrown when trying to get epoch but duration not set"},"errorSelector":"143c378b","name":"EpochDurationNotSet","nameLocation":"1023:19:114","parameters":{"id":60559,"nodeType":"ParameterList","parameters":[],"src":"1042:2:114"}},{"id":60576,"nodeType":"FunctionDefinition","src":"1051:125:114","nodes":[],"body":{"id":60575,"nodeType":"Block","src":"1105:71:114","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":60568,"name":"__BaseStaking_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62502,"src":"1115:28:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":60569,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1115:30:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60570,"nodeType":"ExpressionStatement","src":"1115:30:114"},{"expression":{"id":60573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60571,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"1155:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60572,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60563,"src":"1163:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"src":"1155:14:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"id":60574,"nodeType":"ExpressionStatement","src":"1155:14:114"}]},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":60566,"kind":"modifierInvocation","modifierName":{"id":60565,"name":"initializer","nameLocations":["1093:11:114"],"nodeType":"IdentifierPath","referencedDeclaration":39556,"src":"1093:11:114"},"nodeType":"ModifierInvocation","src":"1093:11:114"}],"name":"initialize","nameLocation":"1060:10:114","parameters":{"id":60564,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60563,"mutability":"mutable","name":"_token","nameLocation":"1078:6:114","nodeType":"VariableDeclaration","scope":60576,"src":"1071:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"},"typeName":{"id":60562,"nodeType":"UserDefinedTypeName","pathNode":{"id":60561,"name":"IERC20","nameLocations":["1071:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":43804,"src":"1071:6:114"},"referencedDeclaration":43804,"src":"1071:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"visibility":"internal"}],"src":"1070:15:114"},"returnParameters":{"id":60567,"nodeType":"ParameterList","parameters":[],"src":"1105:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60621,"nodeType":"FunctionDefinition","src":"1245:359:114","nodes":[],"body":{"id":60620,"nodeType":"Block","src":"1367:237:114","nodes":[],"statements":[{"assignments":[60588],"declarations":[{"constant":false,"id":60588,"mutability":"mutable","name":"domain","nameLocation":"1385:6:114","nodeType":"VariableDeclaration","scope":60620,"src":"1377:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60587,"name":"address","nodeType":"ElementaryTypeName","src":"1377:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":60591,"initialValue":{"expression":{"id":60589,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1394:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1398:6:114","memberName":"sender","nodeType":"MemberAccess","src":"1394:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"1377:27:114"},{"expression":{"id":60596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60592,"name":"epochDurationByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62403,"src":"1414:21:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60594,"indexExpression":{"id":60593,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60588,"src":"1436:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"1414:29:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60595,"name":"epochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60579,"src":"1446:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1414:45:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60597,"nodeType":"ExpressionStatement","src":"1414:45:114"},{"body":{"id":60618,"nodeType":"Block","src":"1518:80:114","statements":[{"expression":{"arguments":[{"baseExpression":{"id":60613,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60582,"src":"1573:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":60615,"indexExpression":{"id":60614,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60599,"src":"1584:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1573:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":60609,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"1532:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60611,"indexExpression":{"id":60610,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60588,"src":"1561:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1532:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60612,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"1569:3:114","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":50403,"src":"1532:40:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$50376_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":60616,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1532:55:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60617,"nodeType":"ExpressionStatement","src":"1532:55:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60602,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60599,"src":"1490:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":60603,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60582,"src":"1494:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":60604,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1505:6:114","memberName":"length","nodeType":"MemberAccess","src":"1494:17:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"1490:21:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60619,"initializationExpression":{"assignments":[60599],"declarations":[{"constant":false,"id":60599,"mutability":"mutable","name":"i","nameLocation":"1483:1:114","nodeType":"VariableDeclaration","scope":60619,"src":"1475:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60598,"name":"uint256","nodeType":"ElementaryTypeName","src":"1475:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60601,"initialValue":{"hexValue":"30","id":60600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1487:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"1475:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"1513:3:114","subExpression":{"id":60606,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60599,"src":"1513:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60608,"nodeType":"ExpressionStatement","src":"1513:3:114"},"nodeType":"ForStatement","src":"1470:128:114"}]},"baseFunctions":[62526],"documentation":{"id":60577,"nodeType":"StructuredDocumentation","src":"1182:58:114","text":"@notice Registers a domain and sets the epoch duration"},"functionSelector":"d37304f8","implemented":true,"kind":"function","modifiers":[{"id":60585,"kind":"modifierInvocation","modifierName":{"id":60584,"name":"nonReentrant","nameLocations":["1354:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":44717,"src":"1354:12:114"},"nodeType":"ModifierInvocation","src":"1354:12:114"}],"name":"registerDomain","nameLocation":"1254:14:114","parameters":{"id":60583,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60579,"mutability":"mutable","name":"epochDuration","nameLocation":"1286:13:114","nodeType":"VariableDeclaration","scope":60621,"src":"1278:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60578,"name":"uint256","nodeType":"ElementaryTypeName","src":"1278:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60582,"mutability":"mutable","name":"custodians","nameLocation":"1328:10:114","nodeType":"VariableDeclaration","scope":60621,"src":"1309:29:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60580,"name":"address","nodeType":"ElementaryTypeName","src":"1309:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60581,"nodeType":"ArrayTypeName","src":"1309:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1268:76:114"},"returnParameters":{"id":60586,"nodeType":"ParameterList","parameters":[],"src":"1367:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":60675,"nodeType":"FunctionDefinition","src":"1686:554:114","nodes":[],"body":{"id":60674,"nodeType":"Block","src":"1788:452:114","nodes":[],"statements":[{"assignments":[60634],"declarations":[{"constant":false,"id":60634,"mutability":"mutable","name":"custodians","nameLocation":"1943:10:114","nodeType":"VariableDeclaration","scope":60674,"src":"1926:27:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60632,"name":"address","nodeType":"ElementaryTypeName","src":"1926:7:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60633,"nodeType":"ArrayTypeName","src":"1926:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":60644,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":60638,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"1983:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60640,"indexExpression":{"id":60639,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60624,"src":"2012:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"1983:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60641,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2020:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"1983:43:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":60642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1983:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60637,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"1956:13:114","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":60635,"name":"address","nodeType":"ElementaryTypeName","src":"1960:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60636,"nodeType":"ArrayTypeName","src":"1960:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":60643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1956:82:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"1926:112:114"},{"body":{"id":60670,"nodeType":"Block","src":"2124:83:114","statements":[{"expression":{"id":60668,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60659,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60634,"src":"2138:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":60661,"indexExpression":{"id":60660,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60646,"src":"2149:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2138:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60666,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60646,"src":"2194:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":60662,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"2154:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60664,"indexExpression":{"id":60663,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60624,"src":"2183:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2154:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60665,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2191:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"2154:39:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":60667,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2154:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2138:58:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60669,"nodeType":"ExpressionStatement","src":"2138:58:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60655,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60649,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60646,"src":"2068:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":60650,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"2072:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60652,"indexExpression":{"id":60651,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60624,"src":"2101:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2072:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60653,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2109:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"2072:43:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":60654,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2072:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2068:49:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60671,"initializationExpression":{"assignments":[60646],"declarations":[{"constant":false,"id":60646,"mutability":"mutable","name":"i","nameLocation":"2061:1:114","nodeType":"VariableDeclaration","scope":60671,"src":"2053:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60645,"name":"uint256","nodeType":"ElementaryTypeName","src":"2053:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60648,"initialValue":{"hexValue":"30","id":60647,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2065:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2053:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60657,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2119:3:114","subExpression":{"id":60656,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60646,"src":"2119:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60658,"nodeType":"ExpressionStatement","src":"2119:3:114"},"nodeType":"ForStatement","src":"2048:159:114"},{"expression":{"id":60672,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60634,"src":"2223:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":60629,"id":60673,"nodeType":"Return","src":"2216:17:114"}]},"baseFunctions":[62652],"documentation":{"id":60622,"nodeType":"StructuredDocumentation","src":"1610:71:114","text":"@notice Gets all custodians who are registered for the given domain"},"functionSelector":"341d5ef5","implemented":true,"kind":"function","modifiers":[],"name":"getRegisteredCustodians","nameLocation":"1695:23:114","parameters":{"id":60625,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60624,"mutability":"mutable","name":"domain","nameLocation":"1736:6:114","nodeType":"VariableDeclaration","scope":60675,"src":"1728:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60623,"name":"address","nodeType":"ElementaryTypeName","src":"1728:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1718:30:114"},"returnParameters":{"id":60629,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60628,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60675,"src":"1770:16:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60626,"name":"address","nodeType":"ElementaryTypeName","src":"1770:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60627,"nodeType":"ArrayTypeName","src":"1770:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1769:18:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60729,"nodeType":"FunctionDefinition","src":"2321:419:114","nodes":[],"body":{"id":60728,"nodeType":"Block","src":"2422:318:114","nodes":[],"statements":[{"assignments":[60688],"declarations":[{"constant":false,"id":60688,"mutability":"mutable","name":"attesters","nameLocation":"2449:9:114","nodeType":"VariableDeclaration","scope":60728,"src":"2432:26:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60686,"name":"address","nodeType":"ElementaryTypeName","src":"2432:7:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60687,"nodeType":"ArrayTypeName","src":"2432:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":60698,"initialValue":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":60692,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"2488:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60694,"indexExpression":{"id":60693,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60678,"src":"2516:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2488:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60695,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2524:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"2488:42:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":60696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2488:44:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60691,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"2461:13:114","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":60689,"name":"address","nodeType":"ElementaryTypeName","src":"2465:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60690,"nodeType":"ArrayTypeName","src":"2465:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":60697,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2461:81:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"2432:110:114"},{"body":{"id":60724,"nodeType":"Block","src":"2627:81:114","statements":[{"expression":{"id":60722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60713,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60688,"src":"2641:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":60715,"indexExpression":{"id":60714,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60700,"src":"2651:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"2641:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60720,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60700,"src":"2695:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":60716,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"2656:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60718,"indexExpression":{"id":60717,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60678,"src":"2684:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2656:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60719,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2692:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"2656:38:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":60721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2656:41:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2641:56:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60723,"nodeType":"ExpressionStatement","src":"2641:56:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60709,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60703,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60700,"src":"2572:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":60704,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"2576:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60706,"indexExpression":{"id":60705,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60678,"src":"2604:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2576:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60707,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"2612:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"2576:42:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":60708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2576:44:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2572:48:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60725,"initializationExpression":{"assignments":[60700],"declarations":[{"constant":false,"id":60700,"mutability":"mutable","name":"i","nameLocation":"2565:1:114","nodeType":"VariableDeclaration","scope":60725,"src":"2557:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60699,"name":"uint256","nodeType":"ElementaryTypeName","src":"2557:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60702,"initialValue":{"hexValue":"30","id":60701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2569:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2557:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2622:3:114","subExpression":{"id":60710,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60700,"src":"2622:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60712,"nodeType":"ExpressionStatement","src":"2622:3:114"},"nodeType":"ForStatement","src":"2552:156:114"},{"expression":{"id":60726,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60688,"src":"2724:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":60683,"id":60727,"nodeType":"Return","src":"2717:16:114"}]},"baseFunctions":[62660],"documentation":{"id":60676,"nodeType":"StructuredDocumentation","src":"2246:70:114","text":"@notice Gets all attesters who are registered for the given domain"},"functionSelector":"1789aeb4","implemented":true,"kind":"function","modifiers":[],"name":"getRegisteredAttesters","nameLocation":"2330:22:114","parameters":{"id":60679,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60678,"mutability":"mutable","name":"domain","nameLocation":"2370:6:114","nodeType":"VariableDeclaration","scope":60729,"src":"2362:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60677,"name":"address","nodeType":"ElementaryTypeName","src":"2362:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2352:30:114"},"returnParameters":{"id":60683,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60682,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60729,"src":"2404:16:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60680,"name":"address","nodeType":"ElementaryTypeName","src":"2404:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60681,"nodeType":"ArrayTypeName","src":"2404:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2403:18:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60838,"nodeType":"FunctionDefinition","src":"2827:1107:114","nodes":[],"body":{"id":60837,"nodeType":"Block","src":"2941:993:114","nodes":[],"statements":[{"assignments":[60739],"declarations":[{"constant":false,"id":60739,"mutability":"mutable","name":"totalAttesters","nameLocation":"3005:14:114","nodeType":"VariableDeclaration","scope":60837,"src":"2997:22:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60738,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60745,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":60740,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"3022:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60742,"indexExpression":{"id":60741,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60732,"src":"3050:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3022:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60743,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3058:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"3022:42:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":60744,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3022:44:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"2997:69:114"},{"assignments":[60747],"declarations":[{"constant":false,"id":60747,"mutability":"mutable","name":"activeAttesterCount","nameLocation":"3131:19:114","nodeType":"VariableDeclaration","scope":60837,"src":"3123:27:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60746,"name":"uint256","nodeType":"ElementaryTypeName","src":"3123:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60749,"initialValue":{"hexValue":"30","id":60748,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3153:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3123:31:114"},{"body":{"id":60780,"nodeType":"Block","src":"3209:213:114","statements":[{"assignments":[60761],"declarations":[{"constant":false,"id":60761,"mutability":"mutable","name":"attester","nameLocation":"3231:8:114","nodeType":"VariableDeclaration","scope":60780,"src":"3223:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60760,"name":"address","nodeType":"ElementaryTypeName","src":"3223:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":60768,"initialValue":{"arguments":[{"id":60766,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60751,"src":"3281:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":60762,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"3242:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60764,"indexExpression":{"id":60763,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60732,"src":"3270:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3242:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60765,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3278:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"3242:38:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":60767,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3242:41:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3223:60:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60774,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":60770,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60732,"src":"3335:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60771,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60761,"src":"3343:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60769,"name":"getAttesterStakeForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61448,"src":"3301:33:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":60772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3301:51:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60773,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3355:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3301:55:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60779,"nodeType":"IfStatement","src":"3297:115:114","trueBody":{"id":60778,"nodeType":"Block","src":"3358:54:114","statements":[{"expression":{"id":60776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3376:21:114","subExpression":{"id":60775,"name":"activeAttesterCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60747,"src":"3376:19:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60777,"nodeType":"ExpressionStatement","src":"3376:21:114"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60756,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60754,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60751,"src":"3184:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":60755,"name":"totalAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60739,"src":"3188:14:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3184:18:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60781,"initializationExpression":{"assignments":[60751],"declarations":[{"constant":false,"id":60751,"mutability":"mutable","name":"i","nameLocation":"3177:1:114","nodeType":"VariableDeclaration","scope":60781,"src":"3169:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60750,"name":"uint256","nodeType":"ElementaryTypeName","src":"3169:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60753,"initialValue":{"hexValue":"30","id":60752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3181:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3169:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60758,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3204:3:114","subExpression":{"id":60757,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60751,"src":"3204:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60759,"nodeType":"ExpressionStatement","src":"3204:3:114"},"nodeType":"ForStatement","src":"3164:258:114"},{"assignments":[60786],"declarations":[{"constant":false,"id":60786,"mutability":"mutable","name":"activeAttesters","nameLocation":"3493:15:114","nodeType":"VariableDeclaration","scope":60837,"src":"3476:32:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60784,"name":"address","nodeType":"ElementaryTypeName","src":"3476:7:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60785,"nodeType":"ArrayTypeName","src":"3476:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":60792,"initialValue":{"arguments":[{"id":60790,"name":"activeAttesterCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60747,"src":"3525:19:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60789,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"3511:13:114","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":60787,"name":"address","nodeType":"ElementaryTypeName","src":"3515:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60788,"nodeType":"ArrayTypeName","src":"3515:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}}},"id":60791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3511:34:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"3476:69:114"},{"assignments":[60794],"declarations":[{"constant":false,"id":60794,"mutability":"mutable","name":"activeIndex","nameLocation":"3563:11:114","nodeType":"VariableDeclaration","scope":60837,"src":"3555:19:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60793,"name":"uint256","nodeType":"ElementaryTypeName","src":"3555:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60796,"initialValue":{"hexValue":"30","id":60795,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3577:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3555:23:114"},{"body":{"id":60833,"nodeType":"Block","src":"3633:262:114","statements":[{"assignments":[60808],"declarations":[{"constant":false,"id":60808,"mutability":"mutable","name":"attester","nameLocation":"3655:8:114","nodeType":"VariableDeclaration","scope":60833,"src":"3647:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60807,"name":"address","nodeType":"ElementaryTypeName","src":"3647:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":60815,"initialValue":{"arguments":[{"id":60813,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60798,"src":"3705:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":60809,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"3666:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60811,"indexExpression":{"id":60810,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60732,"src":"3694:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"3666:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60812,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"3702:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"3666:38:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":60814,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3666:41:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"3647:60:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":60817,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60732,"src":"3759:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60818,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60808,"src":"3767:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60816,"name":"getAttesterStakeForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61448,"src":"3725:33:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view returns (uint256)"}},"id":60819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3725:51:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3779:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"3725:55:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60832,"nodeType":"IfStatement","src":"3721:164:114","trueBody":{"id":60831,"nodeType":"Block","src":"3782:103:114","statements":[{"expression":{"id":60826,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60822,"name":"activeAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60786,"src":"3800:15:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":60824,"indexExpression":{"id":60823,"name":"activeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60794,"src":"3816:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"3800:28:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60825,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60808,"src":"3831:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3800:39:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60827,"nodeType":"ExpressionStatement","src":"3800:39:114"},{"expression":{"id":60829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3857:13:114","subExpression":{"id":60828,"name":"activeIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60794,"src":"3857:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60830,"nodeType":"ExpressionStatement","src":"3857:13:114"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60803,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60801,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60798,"src":"3608:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":60802,"name":"totalAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60739,"src":"3612:14:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3608:18:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60834,"initializationExpression":{"assignments":[60798],"declarations":[{"constant":false,"id":60798,"mutability":"mutable","name":"i","nameLocation":"3601:1:114","nodeType":"VariableDeclaration","scope":60834,"src":"3593:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60797,"name":"uint256","nodeType":"ElementaryTypeName","src":"3593:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60800,"initialValue":{"hexValue":"30","id":60799,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"3605:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"3593:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60805,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"3628:3:114","subExpression":{"id":60804,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60798,"src":"3628:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60806,"nodeType":"ExpressionStatement","src":"3628:3:114"},"nodeType":"ForStatement","src":"3588:307:114"},{"expression":{"id":60835,"name":"activeAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60786,"src":"3912:15:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":60737,"id":60836,"nodeType":"Return","src":"3905:22:114"}]},"baseFunctions":[62744],"documentation":{"id":60730,"nodeType":"StructuredDocumentation","src":"2746:76:114","text":"@notice Gets all attesters who have stake in the current accepting epoch"},"functionSelector":"4234a479","implemented":true,"kind":"function","modifiers":[],"name":"getStakedAttestersForAcceptingEpoch","nameLocation":"2836:35:114","parameters":{"id":60733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60732,"mutability":"mutable","name":"domain","nameLocation":"2889:6:114","nodeType":"VariableDeclaration","scope":60838,"src":"2881:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60731,"name":"address","nodeType":"ElementaryTypeName","src":"2881:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2871:30:114"},"returnParameters":{"id":60737,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60736,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60838,"src":"2923:16:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60734,"name":"address","nodeType":"ElementaryTypeName","src":"2923:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60735,"nodeType":"ArrayTypeName","src":"2923:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2922:18:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60851,"nodeType":"FunctionDefinition","src":"4001:125:114","nodes":[],"body":{"id":60850,"nodeType":"Block","src":"4073:53:114","nodes":[],"statements":[{"expression":{"baseExpression":{"id":60846,"name":"epochDurationByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62403,"src":"4090:21:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60848,"indexExpression":{"id":60847,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60841,"src":"4112:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4090:29:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60845,"id":60849,"nodeType":"Return","src":"4083:36:114"}]},"baseFunctions":[62788],"documentation":{"id":60839,"nodeType":"StructuredDocumentation","src":"3940:56:114","text":"@notice Gets the epoch duration for the given domain"},"functionSelector":"5c534359","implemented":true,"kind":"function","modifiers":[],"name":"getEpochDuration","nameLocation":"4010:16:114","parameters":{"id":60842,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60841,"mutability":"mutable","name":"domain","nameLocation":"4035:6:114","nodeType":"VariableDeclaration","scope":60851,"src":"4027:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60840,"name":"address","nodeType":"ElementaryTypeName","src":"4027:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4026:16:114"},"returnParameters":{"id":60845,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60844,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60851,"src":"4064:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60843,"name":"uint256","nodeType":"ElementaryTypeName","src":"4064:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4063:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60895,"nodeType":"FunctionDefinition","src":"4287:406:114","nodes":[],"body":{"id":60894,"nodeType":"Block","src":"4357:336:114","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60867,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60860,"name":"newEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60856,"src":"4375:8:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"arguments":[{"arguments":[{"id":60864,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60854,"src":"4417:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60863,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"4409:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60862,"name":"address","nodeType":"ElementaryTypeName","src":"4409:7:114","typeDescriptions":{}}},"id":60865,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4409:15:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60861,"name":"getEpochByL1BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61192,"src":"4387:21:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":60866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4387:38:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4375:50:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f50524553454e545f45504f4348","id":60868,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4427:43:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_bafb0cf99a53f47fa38d345ccc72a9af618a38afdc4637810d95112bae4fd5da","typeString":"literal_string \"NEW_EPOCH_MUST_BE_LESS_THAN_PRESENT_EPOCH\""},"value":"NEW_EPOCH_MUST_BE_LESS_THAN_PRESENT_EPOCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bafb0cf99a53f47fa38d345ccc72a9af618a38afdc4637810d95112bae4fd5da","typeString":"literal_string \"NEW_EPOCH_MUST_BE_LESS_THAN_PRESENT_EPOCH\""}],"id":60859,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4367:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4367:104:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60870,"nodeType":"ExpressionStatement","src":"4367:104:114"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60876,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60872,"name":"newEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60856,"src":"4489:8:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[{"id":60874,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60854,"src":"4518:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60873,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"4500:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":60875,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4500:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4489:36:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f43555252454e545f45504f4348","id":60877,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4527:45:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_855bed83e45ffd12caf7970c2a2c68213b0e5206360b8dce424893928859487b","typeString":"literal_string \"NEW_EPOCH_MUST_BE_HIGHER_THAN_CURRENT_EPOCH\""},"value":"NEW_EPOCH_MUST_BE_HIGHER_THAN_CURRENT_EPOCH"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_855bed83e45ffd12caf7970c2a2c68213b0e5206360b8dce424893928859487b","typeString":"literal_string \"NEW_EPOCH_MUST_BE_HIGHER_THAN_CURRENT_EPOCH\""}],"id":60871,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4481:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60878,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4481:92:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60879,"nodeType":"ExpressionStatement","src":"4481:92:114"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":60884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":60881,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4591:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4595:6:114","memberName":"sender","nodeType":"MemberAccess","src":"4591:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":60883,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60854,"src":"4605:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"4591:20:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e415554484f52495a4544","id":60885,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4613:14:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_269df367cd41cace5897a935d0e0858fe4543b5619d45e09af6b124c1bb3d528","typeString":"literal_string \"UNAUTHORIZED\""},"value":"UNAUTHORIZED"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_269df367cd41cace5897a935d0e0858fe4543b5619d45e09af6b124c1bb3d528","typeString":"literal_string \"UNAUTHORIZED\""}],"id":60880,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4583:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":60886,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4583:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60887,"nodeType":"ExpressionStatement","src":"4583:45:114"},{"expression":{"id":60892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60888,"name":"currentAcceptingEpochByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62408,"src":"4638:29:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60890,"indexExpression":{"id":60889,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60854,"src":"4668:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4638:37:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60891,"name":"newEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60856,"src":"4678:8:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4638:48:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60893,"nodeType":"ExpressionStatement","src":"4638:48:114"}]},"baseFunctions":[62795],"documentation":{"id":60852,"nodeType":"StructuredDocumentation","src":"4132:150:114","text":"@notice Sets the accepting epoch for a given domain\n @param domain The domain address\n @param newEpoch The new accepting epoch value"},"functionSelector":"1dc8b949","implemented":true,"kind":"function","modifiers":[],"name":"setAcceptingEpoch","nameLocation":"4296:17:114","parameters":{"id":60857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60854,"mutability":"mutable","name":"domain","nameLocation":"4322:6:114","nodeType":"VariableDeclaration","scope":60895,"src":"4314:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60853,"name":"address","nodeType":"ElementaryTypeName","src":"4314:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":60856,"mutability":"mutable","name":"newEpoch","nameLocation":"4338:8:114","nodeType":"VariableDeclaration","scope":60895,"src":"4330:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60855,"name":"uint256","nodeType":"ElementaryTypeName","src":"4330:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4313:34:114"},"returnParameters":{"id":60858,"nodeType":"ParameterList","parameters":[],"src":"4357:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":61018,"nodeType":"FunctionDefinition","src":"4699:1563:114","nodes":[],"body":{"id":61017,"nodeType":"Block","src":"4752:1510:114","nodes":[],"statements":[{"assignments":[60901],"declarations":[{"constant":false,"id":60901,"mutability":"mutable","name":"domain","nameLocation":"4770:6:114","nodeType":"VariableDeclaration","scope":61017,"src":"4762:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60900,"name":"address","nodeType":"ElementaryTypeName","src":"4762:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":60904,"initialValue":{"expression":{"id":60902,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4779:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4783:6:114","memberName":"sender","nodeType":"MemberAccess","src":"4779:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"4762:27:114"},{"condition":{"baseExpression":{"id":60905,"name":"domainGenesisAccepted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62453,"src":"4804:21:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":60907,"indexExpression":{"id":60906,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"4826:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4804:29:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60911,"nodeType":"IfStatement","src":"4800:66:114","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":60908,"name":"GenesisAlreadyAccepted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62736,"src":"4842:22:114","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":60909,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4842:24:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":60910,"nodeType":"RevertStatement","src":"4835:31:114"}},{"expression":{"id":60916,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60912,"name":"domainGenesisAccepted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62453,"src":"4876:21:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":60914,"indexExpression":{"id":60913,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"4898:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"4876:29:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":60915,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"4908:4:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"4876:36:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60917,"nodeType":"ExpressionStatement","src":"4876:36:114"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":60919,"name":"epochDurationByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62403,"src":"4938:21:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60921,"indexExpression":{"id":60920,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"4960:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4938:29:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60922,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4970:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"4938:33:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"id":60918,"name":"assert","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-3,"src":"4931:6:114","typeDescriptions":{"typeIdentifier":"t_function_assert_pure$_t_bool_$returns$__$","typeString":"function (bool) pure"}},"id":60924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4931:41:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":60925,"nodeType":"ExpressionStatement","src":"4931:41:114"},{"expression":{"id":60932,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":60926,"name":"currentAcceptingEpochByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62408,"src":"5054:29:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60928,"indexExpression":{"id":60927,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5084:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5054:37:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":60930,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5116:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60929,"name":"getEpochByL1BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61192,"src":"5094:21:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":60931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5094:29:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5054:69:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60933,"nodeType":"ExpressionStatement","src":"5054:69:114"},{"body":{"id":61015,"nodeType":"Block","src":"5209:1047:114","statements":[{"assignments":[60949],"declarations":[{"constant":false,"id":60949,"mutability":"mutable","name":"attester","nameLocation":"5231:8:114","nodeType":"VariableDeclaration","scope":61015,"src":"5223:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60948,"name":"address","nodeType":"ElementaryTypeName","src":"5223:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":60956,"initialValue":{"arguments":[{"id":60954,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60935,"src":"5281:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":60950,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"5242:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60952,"indexExpression":{"id":60951,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5270:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5242:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60953,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5278:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"5242:38:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":60955,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5242:41:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5223:60:114"},{"body":{"id":61013,"nodeType":"Block","src":"5374:876:114","statements":[{"assignments":[60972],"declarations":[{"constant":false,"id":60972,"mutability":"mutable","name":"custodian","nameLocation":"5400:9:114","nodeType":"VariableDeclaration","scope":61013,"src":"5392:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60971,"name":"address","nodeType":"ElementaryTypeName","src":"5392:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":60979,"initialValue":{"arguments":[{"id":60977,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60958,"src":"5452:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":60973,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"5412:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60975,"indexExpression":{"id":60974,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5441:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5412:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60976,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5449:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"5412:39:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":60978,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5412:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"5392:62:114"},{"assignments":[60981],"declarations":[{"constant":false,"id":60981,"mutability":"mutable","name":"attesterStake","nameLocation":"5539:13:114","nodeType":"VariableDeclaration","scope":61013,"src":"5531:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60980,"name":"uint256","nodeType":"ElementaryTypeName","src":"5531:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60988,"initialValue":{"arguments":[{"id":60983,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5585:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":60984,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5613:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"id":60985,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60972,"src":"5636:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60986,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60949,"src":"5667:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60982,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"5555:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":60987,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5555:138:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5531:162:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60993,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":60990,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5897:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60989,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"5879:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":60991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5879:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60992,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5907:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5879:29:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61012,"nodeType":"IfStatement","src":"5875:365:114","trueBody":{"id":61011,"nodeType":"Block","src":"5910:330:114","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60998,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":60995,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5950:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":60994,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"5932:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":60996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5932:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":60997,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5960:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5932:29:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61010,"nodeType":"IfStatement","src":"5928:298:114","trueBody":{"id":61009,"nodeType":"Block","src":"5963:263:114","statements":[{"expression":{"arguments":[{"id":61000,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"6020:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61002,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"6070:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61001,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"6052:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6052:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61004,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60972,"src":"6103:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61005,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60949,"src":"6138:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61006,"name":"attesterStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60981,"src":"6172:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60999,"name":"_addStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61054,"src":"5985:9:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5985:222:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61008,"nodeType":"ExpressionStatement","src":"5985:222:114"}]}}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60961,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60958,"src":"5318:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":60962,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"5322:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60964,"indexExpression":{"id":60963,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5351:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5322:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60965,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5359:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"5322:43:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":60966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5322:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5318:49:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61014,"initializationExpression":{"assignments":[60958],"declarations":[{"constant":false,"id":60958,"mutability":"mutable","name":"j","nameLocation":"5311:1:114","nodeType":"VariableDeclaration","scope":61014,"src":"5303:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60957,"name":"uint256","nodeType":"ElementaryTypeName","src":"5303:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60960,"initialValue":{"hexValue":"30","id":60959,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5315:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5303:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5369:3:114","subExpression":{"id":60968,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60958,"src":"5369:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60970,"nodeType":"ExpressionStatement","src":"5369:3:114"},"nodeType":"ForStatement","src":"5298:952:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60938,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60935,"src":"5154:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":60939,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"5158:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":60941,"indexExpression":{"id":60940,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60901,"src":"5186:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5158:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":60942,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"5194:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"5158:42:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":60943,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5158:44:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5154:48:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61016,"initializationExpression":{"assignments":[60935],"declarations":[{"constant":false,"id":60935,"mutability":"mutable","name":"i","nameLocation":"5147:1:114","nodeType":"VariableDeclaration","scope":61016,"src":"5139:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60934,"name":"uint256","nodeType":"ElementaryTypeName","src":"5139:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60937,"initialValue":{"hexValue":"30","id":60936,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5151:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"5139:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60946,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"5204:3:114","subExpression":{"id":60945,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60935,"src":"5204:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60947,"nodeType":"ExpressionStatement","src":"5204:3:114"},"nodeType":"ForStatement","src":"5134:1122:114"}]},"baseFunctions":[62529],"functionSelector":"92a2ebf3","implemented":true,"kind":"function","modifiers":[{"id":60898,"kind":"modifierInvocation","modifierName":{"id":60897,"name":"nonReentrant","nameLocations":["4739:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":44717,"src":"4739:12:114"},"nodeType":"ModifierInvocation","src":"4739:12:114"}],"name":"acceptGenesisCeremony","nameLocation":"4708:21:114","parameters":{"id":60896,"nodeType":"ParameterList","parameters":[],"src":"4729:2:114"},"returnParameters":{"id":60899,"nodeType":"ParameterList","parameters":[],"src":"4752:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":61054,"nodeType":"FunctionDefinition","src":"6268:331:114","nodes":[],"body":{"id":61053,"nodeType":"Block","src":"6426:173:114","nodes":[],"statements":[{"expression":{"id":61041,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61031,"name":"stakesByDomainEpochCustodianAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62429,"src":"6436:36:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":61036,"indexExpression":{"id":61032,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61020,"src":"6473:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6436:44:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":61037,"indexExpression":{"id":61033,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61022,"src":"6481:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6436:51:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":61038,"indexExpression":{"id":61034,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61024,"src":"6488:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6436:62:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61039,"indexExpression":{"id":61035,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61026,"src":"6499:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6436:72:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":61040,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61028,"src":"6512:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6436:82:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61042,"nodeType":"ExpressionStatement","src":"6436:82:114"},{"expression":{"id":61051,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61043,"name":"stakesByDomainEpochCustodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62449,"src":"6528:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => uint256)))"}},"id":61047,"indexExpression":{"id":61044,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61020,"src":"6557:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6528:36:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":61048,"indexExpression":{"id":61045,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61022,"src":"6565:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6528:43:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61049,"indexExpression":{"id":61046,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61024,"src":"6572:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6528:54:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":61050,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61028,"src":"6586:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6528:64:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61052,"nodeType":"ExpressionStatement","src":"6528:64:114"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_addStake","nameLocation":"6277:9:114","parameters":{"id":61029,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61020,"mutability":"mutable","name":"domain","nameLocation":"6304:6:114","nodeType":"VariableDeclaration","scope":61054,"src":"6296:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61019,"name":"address","nodeType":"ElementaryTypeName","src":"6296:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61022,"mutability":"mutable","name":"epoch","nameLocation":"6328:5:114","nodeType":"VariableDeclaration","scope":61054,"src":"6320:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61021,"name":"uint256","nodeType":"ElementaryTypeName","src":"6320:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61024,"mutability":"mutable","name":"custodian","nameLocation":"6351:9:114","nodeType":"VariableDeclaration","scope":61054,"src":"6343:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61023,"name":"address","nodeType":"ElementaryTypeName","src":"6343:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61026,"mutability":"mutable","name":"attester","nameLocation":"6378:8:114","nodeType":"VariableDeclaration","scope":61054,"src":"6370:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61025,"name":"address","nodeType":"ElementaryTypeName","src":"6370:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61028,"mutability":"mutable","name":"amount","nameLocation":"6404:6:114","nodeType":"VariableDeclaration","scope":61054,"src":"6396:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61027,"name":"uint256","nodeType":"ElementaryTypeName","src":"6396:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6286:130:114"},"returnParameters":{"id":61030,"nodeType":"ParameterList","parameters":[],"src":"6426:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61090,"nodeType":"FunctionDefinition","src":"6605:334:114","nodes":[],"body":{"id":61089,"nodeType":"Block","src":"6766:173:114","nodes":[],"statements":[{"expression":{"id":61077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61067,"name":"stakesByDomainEpochCustodianAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62429,"src":"6776:36:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":61072,"indexExpression":{"id":61068,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61056,"src":"6813:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6776:44:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":61073,"indexExpression":{"id":61069,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61058,"src":"6821:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6776:51:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":61074,"indexExpression":{"id":61070,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61060,"src":"6828:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6776:62:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61075,"indexExpression":{"id":61071,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61062,"src":"6839:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6776:72:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":61076,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61064,"src":"6852:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6776:82:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61078,"nodeType":"ExpressionStatement","src":"6776:82:114"},{"expression":{"id":61087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61079,"name":"stakesByDomainEpochCustodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62449,"src":"6868:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => uint256)))"}},"id":61083,"indexExpression":{"id":61080,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61056,"src":"6897:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6868:36:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":61084,"indexExpression":{"id":61081,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61058,"src":"6905:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6868:43:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61085,"indexExpression":{"id":61082,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61060,"src":"6912:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6868:54:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":61086,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61064,"src":"6926:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6868:64:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61088,"nodeType":"ExpressionStatement","src":"6868:64:114"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeStake","nameLocation":"6614:12:114","parameters":{"id":61065,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61056,"mutability":"mutable","name":"domain","nameLocation":"6644:6:114","nodeType":"VariableDeclaration","scope":61090,"src":"6636:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61055,"name":"address","nodeType":"ElementaryTypeName","src":"6636:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61058,"mutability":"mutable","name":"epoch","nameLocation":"6668:5:114","nodeType":"VariableDeclaration","scope":61090,"src":"6660:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61057,"name":"uint256","nodeType":"ElementaryTypeName","src":"6660:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61060,"mutability":"mutable","name":"custodian","nameLocation":"6691:9:114","nodeType":"VariableDeclaration","scope":61090,"src":"6683:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61059,"name":"address","nodeType":"ElementaryTypeName","src":"6683:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61062,"mutability":"mutable","name":"attester","nameLocation":"6718:8:114","nodeType":"VariableDeclaration","scope":61090,"src":"6710:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61061,"name":"address","nodeType":"ElementaryTypeName","src":"6710:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61064,"mutability":"mutable","name":"amount","nameLocation":"6744:6:114","nodeType":"VariableDeclaration","scope":61090,"src":"6736:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61063,"name":"uint256","nodeType":"ElementaryTypeName","src":"6736:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6626:130:114"},"returnParameters":{"id":61066,"nodeType":"ParameterList","parameters":[],"src":"6766:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61116,"nodeType":"FunctionDefinition","src":"6945:261:114","nodes":[],"body":{"id":61115,"nodeType":"Block","src":"7105:101:114","nodes":[],"statements":[{"expression":{"id":61113,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61103,"name":"unstakesByDomainEpochCustodianAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62440,"src":"7115:38:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":61108,"indexExpression":{"id":61104,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61092,"src":"7154:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7115:46:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":61109,"indexExpression":{"id":61105,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61094,"src":"7162:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7115:53:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":61110,"indexExpression":{"id":61106,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61096,"src":"7169:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7115:64:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61111,"indexExpression":{"id":61107,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61098,"src":"7180:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7115:74:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":61112,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61100,"src":"7193:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7115:84:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61114,"nodeType":"ExpressionStatement","src":"7115:84:114"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_addUnstake","nameLocation":"6954:11:114","parameters":{"id":61101,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61092,"mutability":"mutable","name":"domain","nameLocation":"6983:6:114","nodeType":"VariableDeclaration","scope":61116,"src":"6975:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61091,"name":"address","nodeType":"ElementaryTypeName","src":"6975:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61094,"mutability":"mutable","name":"epoch","nameLocation":"7007:5:114","nodeType":"VariableDeclaration","scope":61116,"src":"6999:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61093,"name":"uint256","nodeType":"ElementaryTypeName","src":"6999:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61096,"mutability":"mutable","name":"custodian","nameLocation":"7030:9:114","nodeType":"VariableDeclaration","scope":61116,"src":"7022:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61095,"name":"address","nodeType":"ElementaryTypeName","src":"7022:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61098,"mutability":"mutable","name":"attester","nameLocation":"7057:8:114","nodeType":"VariableDeclaration","scope":61116,"src":"7049:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61097,"name":"address","nodeType":"ElementaryTypeName","src":"7049:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61100,"mutability":"mutable","name":"amount","nameLocation":"7083:6:114","nodeType":"VariableDeclaration","scope":61116,"src":"7075:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61099,"name":"uint256","nodeType":"ElementaryTypeName","src":"7075:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6965:130:114"},"returnParameters":{"id":61102,"nodeType":"ParameterList","parameters":[],"src":"7105:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61142,"nodeType":"FunctionDefinition","src":"7212:264:114","nodes":[],"body":{"id":61141,"nodeType":"Block","src":"7375:101:114","nodes":[],"statements":[{"expression":{"id":61139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61129,"name":"unstakesByDomainEpochCustodianAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62440,"src":"7385:38:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":61134,"indexExpression":{"id":61130,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61118,"src":"7424:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7385:46:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":61135,"indexExpression":{"id":61131,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61120,"src":"7432:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7385:53:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":61136,"indexExpression":{"id":61132,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61122,"src":"7439:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7385:64:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61137,"indexExpression":{"id":61133,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61124,"src":"7450:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7385:74:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":61138,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61126,"src":"7463:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7385:84:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61140,"nodeType":"ExpressionStatement","src":"7385:84:114"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_removeUnstake","nameLocation":"7221:14:114","parameters":{"id":61127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61118,"mutability":"mutable","name":"domain","nameLocation":"7253:6:114","nodeType":"VariableDeclaration","scope":61142,"src":"7245:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61117,"name":"address","nodeType":"ElementaryTypeName","src":"7245:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61120,"mutability":"mutable","name":"epoch","nameLocation":"7277:5:114","nodeType":"VariableDeclaration","scope":61142,"src":"7269:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61119,"name":"uint256","nodeType":"ElementaryTypeName","src":"7269:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61122,"mutability":"mutable","name":"custodian","nameLocation":"7300:9:114","nodeType":"VariableDeclaration","scope":61142,"src":"7292:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61121,"name":"address","nodeType":"ElementaryTypeName","src":"7292:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61124,"mutability":"mutable","name":"attester","nameLocation":"7327:8:114","nodeType":"VariableDeclaration","scope":61142,"src":"7319:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61123,"name":"address","nodeType":"ElementaryTypeName","src":"7319:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61126,"mutability":"mutable","name":"amount","nameLocation":"7353:6:114","nodeType":"VariableDeclaration","scope":61142,"src":"7345:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61125,"name":"uint256","nodeType":"ElementaryTypeName","src":"7345:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7235:130:114"},"returnParameters":{"id":61128,"nodeType":"ParameterList","parameters":[],"src":"7375:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61168,"nodeType":"FunctionDefinition","src":"7482:260:114","nodes":[],"body":{"id":61167,"nodeType":"Block","src":"7642:100:114","nodes":[],"statements":[{"expression":{"id":61165,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61155,"name":"unstakesByDomainEpochCustodianAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62440,"src":"7652:38:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":61160,"indexExpression":{"id":61156,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61144,"src":"7691:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7652:46:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":61161,"indexExpression":{"id":61157,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61146,"src":"7699:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7652:53:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":61162,"indexExpression":{"id":61158,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61148,"src":"7706:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7652:64:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61163,"indexExpression":{"id":61159,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61150,"src":"7717:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"7652:74:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":61164,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61152,"src":"7729:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7652:83:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61166,"nodeType":"ExpressionStatement","src":"7652:83:114"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_setUnstake","nameLocation":"7491:11:114","parameters":{"id":61153,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61144,"mutability":"mutable","name":"domain","nameLocation":"7520:6:114","nodeType":"VariableDeclaration","scope":61168,"src":"7512:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61143,"name":"address","nodeType":"ElementaryTypeName","src":"7512:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61146,"mutability":"mutable","name":"epoch","nameLocation":"7544:5:114","nodeType":"VariableDeclaration","scope":61168,"src":"7536:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61145,"name":"uint256","nodeType":"ElementaryTypeName","src":"7536:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61148,"mutability":"mutable","name":"custodian","nameLocation":"7567:9:114","nodeType":"VariableDeclaration","scope":61168,"src":"7559:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61147,"name":"address","nodeType":"ElementaryTypeName","src":"7559:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61150,"mutability":"mutable","name":"attester","nameLocation":"7594:8:114","nodeType":"VariableDeclaration","scope":61168,"src":"7586:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61149,"name":"address","nodeType":"ElementaryTypeName","src":"7586:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61152,"mutability":"mutable","name":"amount","nameLocation":"7620:6:114","nodeType":"VariableDeclaration","scope":61168,"src":"7612:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61151,"name":"uint256","nodeType":"ElementaryTypeName","src":"7612:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7502:130:114"},"returnParameters":{"id":61154,"nodeType":"ParameterList","parameters":[],"src":"7642:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61192,"nodeType":"FunctionDefinition","src":"8002:226:114","nodes":[],"body":{"id":61191,"nodeType":"Block","src":"8079:149:114","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61179,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":61175,"name":"epochDurationByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62403,"src":"8093:21:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61177,"indexExpression":{"id":61176,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61170,"src":"8115:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8093:29:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":61178,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8126:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8093:34:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61183,"nodeType":"IfStatement","src":"8089:68:114","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":61180,"name":"EpochDurationNotSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60560,"src":"8136:19:114","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":61181,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8136:21:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":61182,"nodeType":"RevertStatement","src":"8129:28:114"}},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61189,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":61184,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8174:5:114","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":61185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8180:9:114","memberName":"timestamp","nodeType":"MemberAccess","src":"8174:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"baseExpression":{"id":61186,"name":"epochDurationByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62403,"src":"8192:21:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61188,"indexExpression":{"id":61187,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61170,"src":"8214:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8192:29:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8174:47:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61174,"id":61190,"nodeType":"Return","src":"8167:54:114"}]},"baseFunctions":[62536],"functionSelector":"d980b40d","implemented":true,"kind":"function","modifiers":[],"name":"getEpochByL1BlockTime","nameLocation":"8011:21:114","parameters":{"id":61171,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61170,"mutability":"mutable","name":"domain","nameLocation":"8041:6:114","nodeType":"VariableDeclaration","scope":61192,"src":"8033:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61169,"name":"address","nodeType":"ElementaryTypeName","src":"8033:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8032:16:114"},"returnParameters":{"id":61174,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61173,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61192,"src":"8070:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61172,"name":"uint256","nodeType":"ElementaryTypeName","src":"8070:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8069:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61204,"nodeType":"FunctionDefinition","src":"8307:134:114","nodes":[],"body":{"id":61203,"nodeType":"Block","src":"8380:61:114","nodes":[],"statements":[{"expression":{"baseExpression":{"id":61199,"name":"currentAcceptingEpochByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62408,"src":"8397:29:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61201,"indexExpression":{"id":61200,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61194,"src":"8427:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8397:37:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61198,"id":61202,"nodeType":"Return","src":"8390:44:114"}]},"baseFunctions":[62543],"functionSelector":"22fceb75","implemented":true,"kind":"function","modifiers":[],"name":"getAcceptingEpoch","nameLocation":"8316:17:114","parameters":{"id":61195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61194,"mutability":"mutable","name":"domain","nameLocation":"8342:6:114","nodeType":"VariableDeclaration","scope":61204,"src":"8334:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61193,"name":"address","nodeType":"ElementaryTypeName","src":"8334:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8333:16:114"},"returnParameters":{"id":61198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61197,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61204,"src":"8371:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61196,"name":"uint256","nodeType":"ElementaryTypeName","src":"8371:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8370:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61226,"nodeType":"FunctionDefinition","src":"8661:180:114","nodes":[],"body":{"id":61225,"nodeType":"Block","src":"8751:90:114","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61216,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":61213,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61207,"src":"8786:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61212,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"8768:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61214,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8768:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":61215,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8797:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8768:30:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61222,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":61219,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61207,"src":"8823:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61218,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"8805:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61220,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8805:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":61221,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8833:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"8805:29:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61223,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"8768:66:114","trueExpression":{"hexValue":"30","id":61217,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8801:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61211,"id":61224,"nodeType":"Return","src":"8761:73:114"}]},"baseFunctions":[62550],"documentation":{"id":61205,"nodeType":"StructuredDocumentation","src":"8447:209:114","text":"@notice Gets the next accepting epoch number\n @dev Special handling for genesis state (epoch 0):\n @dev If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"functionSelector":"771fcfc4","implemented":true,"kind":"function","modifiers":[],"name":"getNextAcceptingEpochWithException","nameLocation":"8670:34:114","parameters":{"id":61208,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61207,"mutability":"mutable","name":"domain","nameLocation":"8713:6:114","nodeType":"VariableDeclaration","scope":61226,"src":"8705:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61206,"name":"address","nodeType":"ElementaryTypeName","src":"8705:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"8704:16:114"},"returnParameters":{"id":61211,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61210,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61226,"src":"8742:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61209,"name":"uint256","nodeType":"ElementaryTypeName","src":"8742:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8741:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61248,"nodeType":"FunctionDefinition","src":"9069:182:114","nodes":[],"body":{"id":61247,"nodeType":"Block","src":"9157:94:114","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":61235,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61229,"src":"9192:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61234,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"9174:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61236,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9174:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":61237,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9203:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"9174:30:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":61241,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61229,"src":"9233:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61240,"name":"getEpochByL1BlockTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61192,"src":"9211:21:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61242,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9211:29:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":61243,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9243:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"9211:33:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61245,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"9174:70:114","trueExpression":{"hexValue":"30","id":61239,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9207:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61233,"id":61246,"nodeType":"Return","src":"9167:77:114"}]},"baseFunctions":[62557],"documentation":{"id":61227,"nodeType":"StructuredDocumentation","src":"8847:217:114","text":"@notice Gets the next present epoch number\n @dev Special handling for genesis state (accepting epoch 0):\n @dev If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"functionSelector":"57dd6a94","implemented":true,"kind":"function","modifiers":[],"name":"getNextPresentEpochWithException","nameLocation":"9078:32:114","parameters":{"id":61230,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61229,"mutability":"mutable","name":"domain","nameLocation":"9119:6:114","nodeType":"VariableDeclaration","scope":61248,"src":"9111:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61228,"name":"address","nodeType":"ElementaryTypeName","src":"9111:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9110:16:114"},"returnParameters":{"id":61233,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61232,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61248,"src":"9148:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61231,"name":"uint256","nodeType":"ElementaryTypeName","src":"9148:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9147:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61273,"nodeType":"FunctionDefinition","src":"9342:250:114","nodes":[],"body":{"id":61272,"nodeType":"Block","src":"9496:96:114","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61262,"name":"stakesByDomainEpochCustodianAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62429,"src":"9513:36:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":61264,"indexExpression":{"id":61263,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61251,"src":"9550:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9513:44:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":61266,"indexExpression":{"id":61265,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61253,"src":"9558:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9513:51:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":61268,"indexExpression":{"id":61267,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61255,"src":"9565:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9513:62:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61270,"indexExpression":{"id":61269,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61257,"src":"9576:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9513:72:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61261,"id":61271,"nodeType":"Return","src":"9506:79:114"}]},"baseFunctions":[62570],"documentation":{"id":61249,"nodeType":"StructuredDocumentation","src":"9257:80:114","text":"@dev gets the stake for a given epoch for a given {attester,custodian} tuple"},"functionSelector":"93dfb85c","implemented":true,"kind":"function","modifiers":[],"name":"getStake","nameLocation":"9351:8:114","parameters":{"id":61258,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61251,"mutability":"mutable","name":"domain","nameLocation":"9377:6:114","nodeType":"VariableDeclaration","scope":61273,"src":"9369:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61250,"name":"address","nodeType":"ElementaryTypeName","src":"9369:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61253,"mutability":"mutable","name":"epoch","nameLocation":"9401:5:114","nodeType":"VariableDeclaration","scope":61273,"src":"9393:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61252,"name":"uint256","nodeType":"ElementaryTypeName","src":"9393:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61255,"mutability":"mutable","name":"custodian","nameLocation":"9424:9:114","nodeType":"VariableDeclaration","scope":61273,"src":"9416:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61254,"name":"address","nodeType":"ElementaryTypeName","src":"9416:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61257,"mutability":"mutable","name":"attester","nameLocation":"9451:8:114","nodeType":"VariableDeclaration","scope":61273,"src":"9443:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61256,"name":"address","nodeType":"ElementaryTypeName","src":"9443:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9359:106:114"},"returnParameters":{"id":61261,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61260,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61273,"src":"9487:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61259,"name":"uint256","nodeType":"ElementaryTypeName","src":"9487:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9486:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61295,"nodeType":"FunctionDefinition","src":"9689:326:114","nodes":[],"body":{"id":61294,"nodeType":"Block","src":"9837:178:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":61286,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61276,"src":"9892:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61288,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61276,"src":"9934:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61287,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"9916:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9916:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61290,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61278,"src":"9959:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61291,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61280,"src":"9986:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61285,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"9866:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61292,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9866:142:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61284,"id":61293,"nodeType":"Return","src":"9847:161:114"}]},"baseFunctions":[62581],"documentation":{"id":61274,"nodeType":"StructuredDocumentation","src":"9598:86:114","text":"@dev gets the stake for the accepting epoch for a given {attester,custodian} tuple"},"functionSelector":"a78d1fef","implemented":true,"kind":"function","modifiers":[],"name":"getStakeForAcceptingEpoch","nameLocation":"9698:25:114","parameters":{"id":61281,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61276,"mutability":"mutable","name":"domain","nameLocation":"9741:6:114","nodeType":"VariableDeclaration","scope":61295,"src":"9733:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61275,"name":"address","nodeType":"ElementaryTypeName","src":"9733:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61278,"mutability":"mutable","name":"custodian","nameLocation":"9765:9:114","nodeType":"VariableDeclaration","scope":61295,"src":"9757:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61277,"name":"address","nodeType":"ElementaryTypeName","src":"9757:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61280,"mutability":"mutable","name":"attester","nameLocation":"9792:8:114","nodeType":"VariableDeclaration","scope":61295,"src":"9784:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61279,"name":"address","nodeType":"ElementaryTypeName","src":"9784:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9723:83:114"},"returnParameters":{"id":61284,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61283,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61295,"src":"9828:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61282,"name":"uint256","nodeType":"ElementaryTypeName","src":"9828:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9827:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61320,"nodeType":"FunctionDefinition","src":"10109:254:114","nodes":[],"body":{"id":61319,"nodeType":"Block","src":"10265:98:114","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61309,"name":"unstakesByDomainEpochCustodianAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62440,"src":"10282:38:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => mapping(address => uint256))))"}},"id":61311,"indexExpression":{"id":61310,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61298,"src":"10321:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10282:46:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(uint256 => mapping(address => mapping(address => uint256)))"}},"id":61313,"indexExpression":{"id":61312,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61300,"src":"10329:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10282:53:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":61315,"indexExpression":{"id":61314,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61302,"src":"10336:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10282:64:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61317,"indexExpression":{"id":61316,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61304,"src":"10347:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10282:74:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61308,"id":61318,"nodeType":"Return","src":"10275:81:114"}]},"baseFunctions":[62594],"documentation":{"id":61296,"nodeType":"StructuredDocumentation","src":"10021:83:114","text":"@dev gets the unstake for a given epoch for a given {attester,custodian} tuple"},"functionSelector":"7d93768b","implemented":true,"kind":"function","modifiers":[],"name":"getUnstake","nameLocation":"10118:10:114","parameters":{"id":61305,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61298,"mutability":"mutable","name":"domain","nameLocation":"10146:6:114","nodeType":"VariableDeclaration","scope":61320,"src":"10138:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61297,"name":"address","nodeType":"ElementaryTypeName","src":"10138:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61300,"mutability":"mutable","name":"epoch","nameLocation":"10170:5:114","nodeType":"VariableDeclaration","scope":61320,"src":"10162:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61299,"name":"uint256","nodeType":"ElementaryTypeName","src":"10162:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61302,"mutability":"mutable","name":"custodian","nameLocation":"10193:9:114","nodeType":"VariableDeclaration","scope":61320,"src":"10185:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61301,"name":"address","nodeType":"ElementaryTypeName","src":"10185:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61304,"mutability":"mutable","name":"attester","nameLocation":"10220:8:114","nodeType":"VariableDeclaration","scope":61320,"src":"10212:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61303,"name":"address","nodeType":"ElementaryTypeName","src":"10212:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10128:106:114"},"returnParameters":{"id":61308,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61307,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61320,"src":"10256:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61306,"name":"uint256","nodeType":"ElementaryTypeName","src":"10256:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10255:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61342,"nodeType":"FunctionDefinition","src":"10462:330:114","nodes":[],"body":{"id":61341,"nodeType":"Block","src":"10612:180:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":61333,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61323,"src":"10669:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61335,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61323,"src":"10711:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61334,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"10693:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61336,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10693:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61337,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61325,"src":"10736:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61338,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61327,"src":"10763:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61332,"name":"getUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61320,"src":"10641:10:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61339,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10641:144:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61331,"id":61340,"nodeType":"Return","src":"10622:163:114"}]},"baseFunctions":[62605],"documentation":{"id":61321,"nodeType":"StructuredDocumentation","src":"10369:88:114","text":"@dev gets the unstake for the accepting epoch for a given {attester,custodian} tuple"},"functionSelector":"34eada3a","implemented":true,"kind":"function","modifiers":[],"name":"getUnstakeForAcceptingEpoch","nameLocation":"10471:27:114","parameters":{"id":61328,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61323,"mutability":"mutable","name":"domain","nameLocation":"10516:6:114","nodeType":"VariableDeclaration","scope":61342,"src":"10508:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61322,"name":"address","nodeType":"ElementaryTypeName","src":"10508:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61325,"mutability":"mutable","name":"custodian","nameLocation":"10540:9:114","nodeType":"VariableDeclaration","scope":61342,"src":"10532:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61324,"name":"address","nodeType":"ElementaryTypeName","src":"10532:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61327,"mutability":"mutable","name":"attester","nameLocation":"10567:8:114","nodeType":"VariableDeclaration","scope":61342,"src":"10559:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61326,"name":"address","nodeType":"ElementaryTypeName","src":"10559:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10498:83:114"},"returnParameters":{"id":61331,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61330,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61342,"src":"10603:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61329,"name":"uint256","nodeType":"ElementaryTypeName","src":"10603:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10602:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61363,"nodeType":"FunctionDefinition","src":"10872:215:114","nodes":[],"body":{"id":61362,"nodeType":"Block","src":"11009:78:114","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"baseExpression":{"id":61354,"name":"stakesByDomainEpochCustodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62449,"src":"11026:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$","typeString":"mapping(address => mapping(uint256 => mapping(address => uint256)))"}},"id":61356,"indexExpression":{"id":61355,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61345,"src":"11055:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11026:36:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":61358,"indexExpression":{"id":61357,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61347,"src":"11063:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11026:43:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61360,"indexExpression":{"id":61359,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61349,"src":"11070:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11026:54:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61353,"id":61361,"nodeType":"Return","src":"11019:61:114"}]},"baseFunctions":[62616],"documentation":{"id":61343,"nodeType":"StructuredDocumentation","src":"10798:69:114","text":"@dev gets the total stake for a given epoch for a given custodian"},"functionSelector":"0ce52af5","implemented":true,"kind":"function","modifiers":[],"name":"getCustodianStake","nameLocation":"10881:17:114","parameters":{"id":61350,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61345,"mutability":"mutable","name":"domain","nameLocation":"10916:6:114","nodeType":"VariableDeclaration","scope":61363,"src":"10908:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61344,"name":"address","nodeType":"ElementaryTypeName","src":"10908:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61347,"mutability":"mutable","name":"epoch","nameLocation":"10940:5:114","nodeType":"VariableDeclaration","scope":61363,"src":"10932:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61346,"name":"uint256","nodeType":"ElementaryTypeName","src":"10932:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61349,"mutability":"mutable","name":"custodian","nameLocation":"10963:9:114","nodeType":"VariableDeclaration","scope":61363,"src":"10955:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61348,"name":"address","nodeType":"ElementaryTypeName","src":"10955:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"10898:80:114"},"returnParameters":{"id":61353,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61352,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61363,"src":"11000:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61351,"name":"uint256","nodeType":"ElementaryTypeName","src":"11000:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"10999:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61382,"nodeType":"FunctionDefinition","src":"11173:230:114","nodes":[],"body":{"id":61381,"nodeType":"Block","src":"11304:99:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":61374,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61366,"src":"11351:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61376,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61366,"src":"11377:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61375,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"11359:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11359:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61378,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61368,"src":"11386:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61373,"name":"getCustodianStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61363,"src":"11333:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) view returns (uint256)"}},"id":61379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11333:63:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61372,"id":61380,"nodeType":"Return","src":"11314:82:114"}]},"baseFunctions":[62625],"documentation":{"id":61364,"nodeType":"StructuredDocumentation","src":"11093:75:114","text":"@dev gets the total stake for the accepting epoch for a given custodian"},"functionSelector":"9db92f68","implemented":true,"kind":"function","modifiers":[],"name":"getCustodianStakeForAcceptingEpoch","nameLocation":"11182:34:114","parameters":{"id":61369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61366,"mutability":"mutable","name":"domain","nameLocation":"11234:6:114","nodeType":"VariableDeclaration","scope":61382,"src":"11226:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61365,"name":"address","nodeType":"ElementaryTypeName","src":"11226:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61368,"mutability":"mutable","name":"custodian","nameLocation":"11258:9:114","nodeType":"VariableDeclaration","scope":61382,"src":"11250:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61367,"name":"address","nodeType":"ElementaryTypeName","src":"11250:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11216:57:114"},"returnParameters":{"id":61372,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61371,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61382,"src":"11295:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61370,"name":"uint256","nodeType":"ElementaryTypeName","src":"11295:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11294:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61430,"nodeType":"FunctionDefinition","src":"11409:381:114","nodes":[],"body":{"id":61429,"nodeType":"Block","src":"11514:276:114","nodes":[],"statements":[{"assignments":[61394],"declarations":[{"constant":false,"id":61394,"mutability":"mutable","name":"attesterStake","nameLocation":"11532:13:114","nodeType":"VariableDeclaration","scope":61429,"src":"11524:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61393,"name":"uint256","nodeType":"ElementaryTypeName","src":"11524:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61396,"initialValue":{"hexValue":"30","id":61395,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11548:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11524:25:114"},{"body":{"id":61425,"nodeType":"Block","src":"11635:119:114","statements":[{"expression":{"id":61423,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61411,"name":"attesterStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61394,"src":"11649:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":61413,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61384,"src":"11675:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61414,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61386,"src":"11683:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":61419,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61398,"src":"11730:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":61415,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"11690:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":61417,"indexExpression":{"id":61416,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61384,"src":"11719:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11690:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":61418,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11727:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"11690:39:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":61420,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11690:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61421,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61388,"src":"11734:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61412,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"11666:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61422,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11666:77:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11649:94:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61424,"nodeType":"ExpressionStatement","src":"11649:94:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61407,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61401,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61398,"src":"11579:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":61402,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"11583:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":61404,"indexExpression":{"id":61403,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61384,"src":"11612:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"11583:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":61405,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11620:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"11583:43:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":61406,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11583:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"11579:49:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61426,"initializationExpression":{"assignments":[61398],"declarations":[{"constant":false,"id":61398,"mutability":"mutable","name":"i","nameLocation":"11572:1:114","nodeType":"VariableDeclaration","scope":61426,"src":"11564:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61397,"name":"uint256","nodeType":"ElementaryTypeName","src":"11564:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61400,"initialValue":{"hexValue":"30","id":61399,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11576:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"11564:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":61409,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"11630:3:114","subExpression":{"id":61408,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61398,"src":"11630:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61410,"nodeType":"ExpressionStatement","src":"11630:3:114"},"nodeType":"ForStatement","src":"11559:195:114"},{"expression":{"id":61427,"name":"attesterStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61394,"src":"11770:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61392,"id":61428,"nodeType":"Return","src":"11763:20:114"}]},"functionSelector":"24fdfddf","implemented":true,"kind":"function","modifiers":[],"name":"getAttesterStake","nameLocation":"11418:16:114","parameters":{"id":61389,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61384,"mutability":"mutable","name":"domain","nameLocation":"11443:6:114","nodeType":"VariableDeclaration","scope":61430,"src":"11435:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61383,"name":"address","nodeType":"ElementaryTypeName","src":"11435:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61386,"mutability":"mutable","name":"epoch","nameLocation":"11459:5:114","nodeType":"VariableDeclaration","scope":61430,"src":"11451:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61385,"name":"uint256","nodeType":"ElementaryTypeName","src":"11451:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61388,"mutability":"mutable","name":"attester","nameLocation":"11474:8:114","nodeType":"VariableDeclaration","scope":61430,"src":"11466:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61387,"name":"address","nodeType":"ElementaryTypeName","src":"11466:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11434:49:114"},"returnParameters":{"id":61392,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61391,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61430,"src":"11505:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61390,"name":"uint256","nodeType":"ElementaryTypeName","src":"11505:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11504:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61448,"nodeType":"FunctionDefinition","src":"11796:192:114","nodes":[],"body":{"id":61447,"nodeType":"Block","src":"11903:85:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":61440,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61432,"src":"11937:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61442,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61432,"src":"11963:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61441,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"11945:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61443,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11945:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61444,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61434,"src":"11972:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61439,"name":"getAttesterStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61430,"src":"11920:16:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) view returns (uint256)"}},"id":61445,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11920:61:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":61438,"id":61446,"nodeType":"Return","src":"11913:68:114"}]},"baseFunctions":[62760],"functionSelector":"3debeadc","implemented":true,"kind":"function","modifiers":[],"name":"getAttesterStakeForAcceptingEpoch","nameLocation":"11805:33:114","parameters":{"id":61435,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61432,"mutability":"mutable","name":"domain","nameLocation":"11847:6:114","nodeType":"VariableDeclaration","scope":61448,"src":"11839:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61431,"name":"address","nodeType":"ElementaryTypeName","src":"11839:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61434,"mutability":"mutable","name":"attester","nameLocation":"11863:8:114","nodeType":"VariableDeclaration","scope":61448,"src":"11855:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61433,"name":"address","nodeType":"ElementaryTypeName","src":"11855:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"11838:34:114"},"returnParameters":{"id":61438,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61437,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":61448,"src":"11894:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61436,"name":"uint256","nodeType":"ElementaryTypeName","src":"11894:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11893:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":61538,"nodeType":"FunctionDefinition","src":"12036:1885:114","nodes":[],"body":{"id":61537,"nodeType":"Block","src":"12178:1743:114","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":61468,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12281:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61469,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12285:6:114","memberName":"sender","nodeType":"MemberAccess","src":"12281:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"baseExpression":{"id":61464,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"12241:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":61466,"indexExpression":{"id":61465,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61451,"src":"12269:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12241:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":61467,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12277:3:114","memberName":"add","nodeType":"MemberAccess","referencedDeclaration":50403,"src":"12241:39:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_AddressSet_$50376_storage_ptr_$_t_address_$returns$_t_bool_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,address) returns (bool)"}},"id":61470,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12241:51:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61471,"nodeType":"ExpressionStatement","src":"12241:51:114"},{"assignments":[61473],"declarations":[{"constant":false,"id":61473,"mutability":"mutable","name":"balanceBefore","nameLocation":"12674:13:114","nodeType":"VariableDeclaration","scope":61537,"src":"12666:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61472,"name":"uint256","nodeType":"ElementaryTypeName","src":"12666:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61481,"initialValue":{"arguments":[{"arguments":[{"id":61478,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12714:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":61477,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12706:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61476,"name":"address","nodeType":"ElementaryTypeName","src":"12706:7:114","typeDescriptions":{}}},"id":61479,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12706:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":61474,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"12690:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"id":61475,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12696:9:114","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43761,"src":"12690:15:114","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":61480,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12690:30:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"12666:54:114"},{"expression":{"arguments":[{"expression":{"id":61485,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13032:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61486,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13036:6:114","memberName":"sender","nodeType":"MemberAccess","src":"13032:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61489,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13052:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":61488,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13044:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61487,"name":"address","nodeType":"ElementaryTypeName","src":"13044:7:114","typeDescriptions":{}}},"id":61490,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13044:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61491,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61456,"src":"13059:6:114","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":61482,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61454,"src":"13009:9:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"id":61484,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13019:12:114","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43803,"src":"13009:22:114","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":61492,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13009:57:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61493,"nodeType":"ExpressionStatement","src":"13009:57:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":61498,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"13189:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":61497,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13181:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61496,"name":"address","nodeType":"ElementaryTypeName","src":"13181:7:114","typeDescriptions":{}}},"id":61499,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13181:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":61494,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"13165:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"id":61495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13171:9:114","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":43761,"src":"13165:15:114","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":61500,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13165:30:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61501,"name":"balanceBefore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61473,"src":"13199:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":61502,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61456,"src":"13215:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13199:22:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13165:56:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61508,"nodeType":"IfStatement","src":"13161:114:114","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":61505,"name":"CustodianTransferAmountMismatch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62734,"src":"13242:31:114","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":61506,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13242:33:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":61507,"nodeType":"RevertStatement","src":"13235:40:114"}},{"expression":{"arguments":[{"id":61510,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61451,"src":"13375:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61512,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61451,"src":"13570:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61511,"name":"getNextAcceptingEpochWithException","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61226,"src":"13535:34:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61513,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13535:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":61516,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61454,"src":"13599:9:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":61515,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13591:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61514,"name":"address","nodeType":"ElementaryTypeName","src":"13591:7:114","typeDescriptions":{}}},"id":61517,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13591:18:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":61518,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13623:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13627:6:114","memberName":"sender","nodeType":"MemberAccess","src":"13623:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61520,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61456,"src":"13647:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61509,"name":"_addStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61054,"src":"13352:9:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61521,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13352:311:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61522,"nodeType":"ExpressionStatement","src":"13352:311:114"},{"eventCall":{"arguments":[{"id":61524,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61451,"src":"13766:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61526,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61451,"src":"13821:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61525,"name":"getNextAcceptingEpochWithException","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61226,"src":"13786:34:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61527,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13786:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"id":61530,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61454,"src":"13850:9:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":61529,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"13842:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61528,"name":"address","nodeType":"ElementaryTypeName","src":"13842:7:114","typeDescriptions":{}}},"id":61531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13842:18:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":61532,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13874:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61533,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13878:6:114","memberName":"sender","nodeType":"MemberAccess","src":"13874:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61534,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61456,"src":"13898:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61523,"name":"AttesterStaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62700,"src":"13738:14:114","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61535,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13738:176:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61536,"nodeType":"EmitStatement","src":"13733:181:114"}]},"baseFunctions":[62635],"documentation":{"id":61449,"nodeType":"StructuredDocumentation","src":"11994:37:114","text":"@notice Stakes for the next epoch"},"functionSelector":"bf6eac2f","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":61459,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62458,"src":"12149:14:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":61460,"kind":"modifierInvocation","modifierName":{"id":61458,"name":"onlyRole","nameLocations":["12140:8:114"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"12140:8:114"},"nodeType":"ModifierInvocation","src":"12140:24:114"},{"id":61462,"kind":"modifierInvocation","modifierName":{"id":61461,"name":"nonReentrant","nameLocations":["12165:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":44717,"src":"12165:12:114"},"nodeType":"ModifierInvocation","src":"12165:12:114"}],"name":"stake","nameLocation":"12045:5:114","parameters":{"id":61457,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61451,"mutability":"mutable","name":"domain","nameLocation":"12068:6:114","nodeType":"VariableDeclaration","scope":61538,"src":"12060:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61450,"name":"address","nodeType":"ElementaryTypeName","src":"12060:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61454,"mutability":"mutable","name":"custodian","nameLocation":"12091:9:114","nodeType":"VariableDeclaration","scope":61538,"src":"12084:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"},"typeName":{"id":61453,"nodeType":"UserDefinedTypeName","pathNode":{"id":61452,"name":"IERC20","nameLocations":["12084:6:114"],"nodeType":"IdentifierPath","referencedDeclaration":43804,"src":"12084:6:114"},"referencedDeclaration":43804,"src":"12084:6:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"visibility":"internal"},{"constant":false,"id":61456,"mutability":"mutable","name":"amount","nameLocation":"12118:6:114","nodeType":"VariableDeclaration","scope":61538,"src":"12110:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61455,"name":"uint256","nodeType":"ElementaryTypeName","src":"12110:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"12050:80:114"},"returnParameters":{"id":61463,"nodeType":"ParameterList","parameters":[],"src":"12178:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":61575,"nodeType":"FunctionDefinition","src":"13972:972:114","nodes":[],"body":{"id":61574,"nodeType":"Block","src":"14117:827:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":61553,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61540,"src":"14473:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61555,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61540,"src":"14668:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61554,"name":"getNextAcceptingEpochWithException","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61226,"src":"14633:34:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61556,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14633:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61557,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61542,"src":"14689:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":61558,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14712:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14716:6:114","memberName":"sender","nodeType":"MemberAccess","src":"14712:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61560,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61544,"src":"14736:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61552,"name":"_addUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61116,"src":"14448:11:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61561,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14448:304:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61562,"nodeType":"ExpressionStatement","src":"14448:304:114"},{"eventCall":{"arguments":[{"id":61564,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61540,"src":"14798:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":61566,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61540,"src":"14853:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61565,"name":"getNextAcceptingEpochWithException","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61226,"src":"14818:34:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14818:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61568,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61542,"src":"14874:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":61569,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14897:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14901:6:114","memberName":"sender","nodeType":"MemberAccess","src":"14897:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61571,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61544,"src":"14921:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61563,"name":"AttesterUnstaked","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62712,"src":"14768:16:114","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61572,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14768:169:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61573,"nodeType":"EmitStatement","src":"14763:174:114"}]},"baseFunctions":[62644],"functionSelector":"60829f8a","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":61547,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62458,"src":"14088:14:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":61548,"kind":"modifierInvocation","modifierName":{"id":61546,"name":"onlyRole","nameLocations":["14079:8:114"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"14079:8:114"},"nodeType":"ModifierInvocation","src":"14079:24:114"},{"id":61550,"kind":"modifierInvocation","modifierName":{"id":61549,"name":"nonReentrant","nameLocations":["14104:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":44717,"src":"14104:12:114"},"nodeType":"ModifierInvocation","src":"14104:12:114"}],"name":"unstake","nameLocation":"13981:7:114","parameters":{"id":61545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61540,"mutability":"mutable","name":"domain","nameLocation":"14006:6:114","nodeType":"VariableDeclaration","scope":61575,"src":"13998:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61539,"name":"address","nodeType":"ElementaryTypeName","src":"13998:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61542,"mutability":"mutable","name":"custodian","nameLocation":"14030:9:114","nodeType":"VariableDeclaration","scope":61575,"src":"14022:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61541,"name":"address","nodeType":"ElementaryTypeName","src":"14022:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61544,"mutability":"mutable","name":"amount","nameLocation":"14057:6:114","nodeType":"VariableDeclaration","scope":61575,"src":"14049:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61543,"name":"uint256","nodeType":"ElementaryTypeName","src":"14049:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"13988:81:114"},"returnParameters":{"id":61551,"nodeType":"ParameterList","parameters":[],"src":"14117:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":61655,"nodeType":"FunctionDefinition","src":"15011:1474:114","nodes":[],"body":{"id":61654,"nodeType":"Block","src":"15159:1326:114","nodes":[],"statements":[{"assignments":[61587],"declarations":[{"constant":false,"id":61587,"mutability":"mutable","name":"stakeAmount","nameLocation":"15273:11:114","nodeType":"VariableDeclaration","scope":61654,"src":"15265:19:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61586,"name":"uint256","nodeType":"ElementaryTypeName","src":"15265:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61594,"initialValue":{"arguments":[{"id":61589,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61577,"src":"15309:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61590,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61579,"src":"15329:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61591,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61581,"src":"15354:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61592,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61583,"src":"15377:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61588,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"15287:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15287:108:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15265:130:114"},{"assignments":[61596],"declarations":[{"constant":false,"id":61596,"mutability":"mutable","name":"unstakeAmount","nameLocation":"15413:13:114","nodeType":"VariableDeclaration","scope":61654,"src":"15405:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61595,"name":"uint256","nodeType":"ElementaryTypeName","src":"15405:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61605,"initialValue":{"arguments":[{"id":61598,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61577,"src":"15453:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61601,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61599,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61579,"src":"15473:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":61600,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15487:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15473:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61602,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61581,"src":"15502:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61603,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61583,"src":"15525:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61597,"name":"getUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61320,"src":"15429:10:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61604,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15429:114:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15405:138:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61606,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61596,"src":"15557:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":61607,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61587,"src":"15573:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15557:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61614,"nodeType":"IfStatement","src":"15553:85:114","trueBody":{"id":61613,"nodeType":"Block","src":"15586:52:114","statements":[{"expression":{"id":61611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":61609,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61596,"src":"15600:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":61610,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61587,"src":"15616:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15600:27:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61612,"nodeType":"ExpressionStatement","src":"15600:27:114"}]}},{"assignments":[61616],"declarations":[{"constant":false,"id":61616,"mutability":"mutable","name":"remainder","nameLocation":"15655:9:114","nodeType":"VariableDeclaration","scope":61654,"src":"15647:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61615,"name":"uint256","nodeType":"ElementaryTypeName","src":"15647:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61620,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61617,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61587,"src":"15667:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":61618,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61596,"src":"15681:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15667:27:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15647:47:114"},{"expression":{"arguments":[{"id":61622,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61577,"src":"15715:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61623,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61579,"src":"15723:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":61624,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15737:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"15723:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61626,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61581,"src":"15740:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61627,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61583,"src":"15751:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61628,"name":"remainder","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61616,"src":"15761:9:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61621,"name":"_addStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61054,"src":"15705:9:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61629,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15705:66:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61630,"nodeType":"ExpressionStatement","src":"15705:66:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61631,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61596,"src":"16181:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":61632,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16197:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16181:17:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61645,"nodeType":"IfStatement","src":"16177:131:114","trueBody":{"id":61644,"nodeType":"Block","src":"16200:108:114","statements":[{"expression":{"arguments":[{"arguments":[{"id":61637,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"16255:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":61636,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16247:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61635,"name":"address","nodeType":"ElementaryTypeName","src":"16247:7:114","typeDescriptions":{}}},"id":61638,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16247:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61639,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61583,"src":"16262:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61640,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61581,"src":"16272:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61641,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61596,"src":"16283:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61634,"name":"_payAttesterFromContractDirectly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62062,"src":"16214:32:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":61642,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16214:83:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61643,"nodeType":"ExpressionStatement","src":"16214:83:114"}]}},{"eventCall":{"arguments":[{"id":61647,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61583,"src":"16360:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61648,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61579,"src":"16382:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61649,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61581,"src":"16407:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61650,"name":"stakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61587,"src":"16430:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61651,"name":"unstakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61596,"src":"16455:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61646,"name":"AttesterEpochRolledOver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62724,"src":"16323:23:114","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,uint256,uint256)"}},"id":61652,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16323:155:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61653,"nodeType":"EmitStatement","src":"16318:160:114"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_rollOverAttester","nameLocation":"15020:17:114","parameters":{"id":61584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61577,"mutability":"mutable","name":"domain","nameLocation":"15055:6:114","nodeType":"VariableDeclaration","scope":61655,"src":"15047:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61576,"name":"address","nodeType":"ElementaryTypeName","src":"15047:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61579,"mutability":"mutable","name":"epochNumber","nameLocation":"15079:11:114","nodeType":"VariableDeclaration","scope":61655,"src":"15071:19:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61578,"name":"uint256","nodeType":"ElementaryTypeName","src":"15071:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61581,"mutability":"mutable","name":"custodian","nameLocation":"15108:9:114","nodeType":"VariableDeclaration","scope":61655,"src":"15100:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61580,"name":"address","nodeType":"ElementaryTypeName","src":"15100:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61583,"mutability":"mutable","name":"attester","nameLocation":"15135:8:114","nodeType":"VariableDeclaration","scope":61655,"src":"15127:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61582,"name":"address","nodeType":"ElementaryTypeName","src":"15127:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15037:112:114"},"returnParameters":{"id":61585,"nodeType":"ParameterList","parameters":[],"src":"15159:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61733,"nodeType":"FunctionDefinition","src":"16491:810:114","nodes":[],"body":{"id":61732,"nodeType":"Block","src":"16561:740:114","nodes":[],"statements":[{"body":{"id":61717,"nodeType":"Block","src":"16790:348:114","statements":[{"assignments":[61677],"declarations":[{"constant":false,"id":61677,"mutability":"mutable","name":"attester","nameLocation":"16812:8:114","nodeType":"VariableDeclaration","scope":61717,"src":"16804:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61676,"name":"address","nodeType":"ElementaryTypeName","src":"16804:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":61684,"initialValue":{"arguments":[{"id":61682,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61663,"src":"16862:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":61678,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"16823:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":61680,"indexExpression":{"id":61679,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61657,"src":"16851:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16823:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":61681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16859:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"16823:38:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":61683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16823:41:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16804:60:114"},{"body":{"id":61715,"nodeType":"Block","src":"16955:173:114","statements":[{"assignments":[61700],"declarations":[{"constant":false,"id":61700,"mutability":"mutable","name":"custodian","nameLocation":"16981:9:114","nodeType":"VariableDeclaration","scope":61715,"src":"16973:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61699,"name":"address","nodeType":"ElementaryTypeName","src":"16973:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":61707,"initialValue":{"arguments":[{"id":61705,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61686,"src":"17033:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"baseExpression":{"id":61701,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"16993:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":61703,"indexExpression":{"id":61702,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61657,"src":"17022:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16993:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":61704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17030:2:114","memberName":"at","nodeType":"MemberAccess","referencedDeclaration":50499,"src":"16993:39:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$_t_uint256_$returns$_t_address_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer,uint256) view returns (address)"}},"id":61706,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16993:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"16973:62:114"},{"expression":{"arguments":[{"id":61709,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61657,"src":"17072:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61710,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61659,"src":"17080:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61711,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61700,"src":"17093:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61712,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61677,"src":"17104:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61708,"name":"_rollOverAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61655,"src":"17054:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (address,uint256,address,address)"}},"id":61713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17054:59:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61714,"nodeType":"ExpressionStatement","src":"17054:59:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61689,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61686,"src":"16899:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":61690,"name":"registeredCustodiansByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62418,"src":"16903:28:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":61692,"indexExpression":{"id":61691,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61657,"src":"16932:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16903:36:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":61693,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16940:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"16903:43:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":61694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16903:45:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16899:49:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61716,"initializationExpression":{"assignments":[61686],"declarations":[{"constant":false,"id":61686,"mutability":"mutable","name":"j","nameLocation":"16892:1:114","nodeType":"VariableDeclaration","scope":61716,"src":"16884:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61685,"name":"uint256","nodeType":"ElementaryTypeName","src":"16884:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61688,"initialValue":{"hexValue":"30","id":61687,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16896:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16884:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":61697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16950:3:114","subExpression":{"id":61696,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61686,"src":"16950:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61698,"nodeType":"ExpressionStatement","src":"16950:3:114"},"nodeType":"ForStatement","src":"16879:249:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61666,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61663,"src":"16735:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"baseExpression":{"id":61667,"name":"registeredAttestersByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62413,"src":"16739:27:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_AddressSet_$50376_storage_$","typeString":"mapping(address => struct EnumerableSet.AddressSet storage ref)"}},"id":61669,"indexExpression":{"id":61668,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61657,"src":"16767:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16739:35:114","typeDescriptions":{"typeIdentifier":"t_struct$_AddressSet_$50376_storage","typeString":"struct EnumerableSet.AddressSet storage ref"}},"id":61670,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16775:6:114","memberName":"length","nodeType":"MemberAccess","referencedDeclaration":50472,"src":"16739:42:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_AddressSet_$50376_storage_ptr_$returns$_t_uint256_$attached_to$_t_struct$_AddressSet_$50376_storage_ptr_$","typeString":"function (struct EnumerableSet.AddressSet storage pointer) view returns (uint256)"}},"id":61671,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16739:44:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16735:48:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61718,"initializationExpression":{"assignments":[61663],"declarations":[{"constant":false,"id":61663,"mutability":"mutable","name":"i","nameLocation":"16728:1:114","nodeType":"VariableDeclaration","scope":61718,"src":"16720:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61662,"name":"uint256","nodeType":"ElementaryTypeName","src":"16720:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61665,"initialValue":{"hexValue":"30","id":61664,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16732:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16720:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":61674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16785:3:114","subExpression":{"id":61673,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61663,"src":"16785:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61675,"nodeType":"ExpressionStatement","src":"16785:3:114"},"nodeType":"ForStatement","src":"16715:423:114"},{"expression":{"id":61725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":61719,"name":"currentAcceptingEpochByDomain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62408,"src":"17187:29:114","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":61721,"indexExpression":{"id":61720,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61657,"src":"17217:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17187:37:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61724,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61722,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61659,"src":"17227:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":61723,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17241:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"17227:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17187:55:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61726,"nodeType":"ExpressionStatement","src":"17187:55:114"},{"eventCall":{"arguments":[{"id":61728,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61657,"src":"17274:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61729,"name":"epochNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61659,"src":"17282:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61727,"name":"EpochRolledOver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62730,"src":"17258:15:114","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":61730,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17258:36:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61731,"nodeType":"EmitStatement","src":"17253:41:114"}]},"implemented":true,"kind":"function","modifiers":[],"name":"_rollOverEpoch","nameLocation":"16500:14:114","parameters":{"id":61660,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61657,"mutability":"mutable","name":"domain","nameLocation":"16523:6:114","nodeType":"VariableDeclaration","scope":61733,"src":"16515:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61656,"name":"address","nodeType":"ElementaryTypeName","src":"16515:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61659,"mutability":"mutable","name":"epochNumber","nameLocation":"16539:11:114","nodeType":"VariableDeclaration","scope":61733,"src":"16531:19:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61658,"name":"uint256","nodeType":"ElementaryTypeName","src":"16531:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16514:37:114"},"returnParameters":{"id":61661,"nodeType":"ParameterList","parameters":[],"src":"16561:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61746,"nodeType":"FunctionDefinition","src":"17307:108:114","nodes":[],"body":{"id":61745,"nodeType":"Block","src":"17341:74:114","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":61737,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17366:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17370:6:114","memberName":"sender","nodeType":"MemberAccess","src":"17366:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":61740,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17396:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61741,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17400:6:114","memberName":"sender","nodeType":"MemberAccess","src":"17396:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61739,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"17378:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61742,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17378:29:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61736,"name":"_rollOverEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61733,"src":"17351:14:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":61743,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17351:57:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61744,"nodeType":"ExpressionStatement","src":"17351:57:114"}]},"baseFunctions":[62663],"functionSelector":"a887b71c","implemented":true,"kind":"function","modifiers":[],"name":"rollOverEpoch","nameLocation":"17316:13:114","parameters":{"id":61734,"nodeType":"ParameterList","parameters":[],"src":"17329:2:114"},"returnParameters":{"id":61735,"nodeType":"ParameterList","parameters":[],"src":"17341:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":61796,"nodeType":"FunctionDefinition","src":"17722:796:114","nodes":[],"body":{"id":61795,"nodeType":"Block","src":"17882:636:114","nodes":[],"statements":[{"assignments":[61761],"declarations":[{"constant":false,"id":61761,"mutability":"mutable","name":"targetEpoch","nameLocation":"17953:11:114","nodeType":"VariableDeclaration","scope":61795,"src":"17945:19:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61760,"name":"uint256","nodeType":"ElementaryTypeName","src":"17945:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61763,"initialValue":{"id":61762,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61751,"src":"17967:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17945:27:114"},{"assignments":[61765],"declarations":[{"constant":false,"id":61765,"mutability":"mutable","name":"stakeForEpoch","nameLocation":"17990:13:114","nodeType":"VariableDeclaration","scope":61795,"src":"17982:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61764,"name":"uint256","nodeType":"ElementaryTypeName","src":"17982:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61772,"initialValue":{"arguments":[{"id":61767,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61749,"src":"18028:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61768,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61761,"src":"18048:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61769,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61753,"src":"18073:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61770,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61755,"src":"18096:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61766,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"18006:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61771,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18006:108:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"17982:132:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61775,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61773,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61765,"src":"18207:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":61774,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61757,"src":"18223:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18207:22:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":61793,"nodeType":"Block","src":"18425:87:114","statements":[{"expression":{"arguments":[{"id":61786,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61749,"src":"18452:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61787,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61761,"src":"18460:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61788,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61753,"src":"18473:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61789,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61755,"src":"18484:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61790,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61757,"src":"18494:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61785,"name":"_removeStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61090,"src":"18439:12:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61791,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18439:62:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61792,"nodeType":"ExpressionStatement","src":"18439:62:114"}]},"id":61794,"nodeType":"IfStatement","src":"18203:309:114","trueBody":{"id":61784,"nodeType":"Block","src":"18231:188:114","statements":[{"expression":{"arguments":[{"id":61777,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61749,"src":"18275:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61778,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61761,"src":"18299:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61779,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61753,"src":"18328:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61780,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61755,"src":"18355:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61781,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61765,"src":"18381:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61776,"name":"_removeStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61090,"src":"18245:12:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61782,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18245:163:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61783,"nodeType":"ExpressionStatement","src":"18245:163:114"}]}}]},"documentation":{"id":61747,"nodeType":"StructuredDocumentation","src":"17421:296:114","text":" @dev Slash an attester's stake\n @param domain The domain of the attester\n @param epoch The epoch in which the slash is attempted\n @param custodian The custodian of the token\n @param attester The attester to slash\n @param amount The amount to slash"},"implemented":true,"kind":"function","modifiers":[],"name":"_slashStake","nameLocation":"17731:11:114","parameters":{"id":61758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61749,"mutability":"mutable","name":"domain","nameLocation":"17760:6:114","nodeType":"VariableDeclaration","scope":61796,"src":"17752:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61748,"name":"address","nodeType":"ElementaryTypeName","src":"17752:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61751,"mutability":"mutable","name":"epoch","nameLocation":"17784:5:114","nodeType":"VariableDeclaration","scope":61796,"src":"17776:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61750,"name":"uint256","nodeType":"ElementaryTypeName","src":"17776:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61753,"mutability":"mutable","name":"custodian","nameLocation":"17807:9:114","nodeType":"VariableDeclaration","scope":61796,"src":"17799:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61752,"name":"address","nodeType":"ElementaryTypeName","src":"17799:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61755,"mutability":"mutable","name":"attester","nameLocation":"17834:8:114","nodeType":"VariableDeclaration","scope":61796,"src":"17826:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61754,"name":"address","nodeType":"ElementaryTypeName","src":"17826:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61757,"mutability":"mutable","name":"amount","nameLocation":"17860:6:114","nodeType":"VariableDeclaration","scope":61796,"src":"17852:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61756,"name":"uint256","nodeType":"ElementaryTypeName","src":"17852:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17742:130:114"},"returnParameters":{"id":61759,"nodeType":"ParameterList","parameters":[],"src":"17882:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61846,"nodeType":"FunctionDefinition","src":"18850:888:114","nodes":[],"body":{"id":61845,"nodeType":"Block","src":"18988:750:114","nodes":[],"statements":[{"assignments":[61809],"declarations":[{"constant":false,"id":61809,"mutability":"mutable","name":"stakeForEpoch","nameLocation":"19065:13:114","nodeType":"VariableDeclaration","scope":61845,"src":"19057:21:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61808,"name":"uint256","nodeType":"ElementaryTypeName","src":"19057:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61816,"initialValue":{"arguments":[{"id":61811,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61799,"src":"19103:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61812,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61801,"src":"19123:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61813,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61803,"src":"19142:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61814,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61805,"src":"19165:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61810,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"19081:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19081:102:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19057:126:114"},{"assignments":[61818],"declarations":[{"constant":false,"id":61818,"mutability":"mutable","name":"targetEpoch","nameLocation":"19201:11:114","nodeType":"VariableDeclaration","scope":61845,"src":"19193:19:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61817,"name":"uint256","nodeType":"ElementaryTypeName","src":"19193:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61822,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61819,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61801,"src":"19215:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":61820,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19223:1:114","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"19215:9:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19193:31:114"},{"assignments":[61824],"declarations":[{"constant":false,"id":61824,"mutability":"mutable","name":"unstakeForEpoch","nameLocation":"19242:15:114","nodeType":"VariableDeclaration","scope":61845,"src":"19234:23:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61823,"name":"uint256","nodeType":"ElementaryTypeName","src":"19234:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61831,"initialValue":{"arguments":[{"id":61826,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61799,"src":"19284:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61827,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61818,"src":"19304:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61828,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61803,"src":"19329:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61829,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61805,"src":"19352:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61825,"name":"getUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61320,"src":"19260:10:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61830,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19260:110:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19234:136:114"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61832,"name":"unstakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61824,"src":"19385:15:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":61833,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61809,"src":"19403:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19385:31:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61844,"nodeType":"IfStatement","src":"19381:351:114","trueBody":{"id":61843,"nodeType":"Block","src":"19418:314:114","statements":[{"expression":{"arguments":[{"id":61836,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61799,"src":"19588:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61837,"name":"targetEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61818,"src":"19612:11:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":61838,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61803,"src":"19641:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61839,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61805,"src":"19668:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61840,"name":"stakeForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61809,"src":"19694:13:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61835,"name":"_setUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61168,"src":"19559:11:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61841,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19559:162:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61842,"nodeType":"ExpressionStatement","src":"19559:162:114"}]}}]},"documentation":{"id":61797,"nodeType":"StructuredDocumentation","src":"18524:321:114","text":" @dev Slash an attester's unstake\n @param domain The domain of the attester\n @param epoch The epoch in which the slash is attempted, i.e., epoch - 1 of the epoch where the unstake will be removed\n @param custodian The custodian of the token\n @param attester The attester to slash"},"implemented":true,"kind":"function","modifiers":[],"name":"_slashUnstake","nameLocation":"18859:13:114","parameters":{"id":61806,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61799,"mutability":"mutable","name":"domain","nameLocation":"18890:6:114","nodeType":"VariableDeclaration","scope":61846,"src":"18882:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61798,"name":"address","nodeType":"ElementaryTypeName","src":"18882:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61801,"mutability":"mutable","name":"epoch","nameLocation":"18914:5:114","nodeType":"VariableDeclaration","scope":61846,"src":"18906:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61800,"name":"uint256","nodeType":"ElementaryTypeName","src":"18906:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":61803,"mutability":"mutable","name":"custodian","nameLocation":"18937:9:114","nodeType":"VariableDeclaration","scope":61846,"src":"18929:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61802,"name":"address","nodeType":"ElementaryTypeName","src":"18929:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61805,"mutability":"mutable","name":"attester","nameLocation":"18964:8:114","nodeType":"VariableDeclaration","scope":61846,"src":"18956:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61804,"name":"address","nodeType":"ElementaryTypeName","src":"18956:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18872:106:114"},"returnParameters":{"id":61807,"nodeType":"ParameterList","parameters":[],"src":"18988:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":61954,"nodeType":"FunctionDefinition","src":"19744:1588:114","nodes":[],"body":{"id":61953,"nodeType":"Block","src":"19940:1392:114","nodes":[],"statements":[{"body":{"id":61951,"nodeType":"Block","src":"19997:1329:114","statements":[{"assignments":[61875],"declarations":[{"constant":false,"id":61875,"mutability":"mutable","name":"refundAmount","nameLocation":"20246:12:114","nodeType":"VariableDeclaration","scope":61951,"src":"20238:20:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61874,"name":"uint256","nodeType":"ElementaryTypeName","src":"20238:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61903,"initialValue":{"arguments":[{"arguments":[{"expression":{"id":61879,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20317:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61880,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20321:6:114","memberName":"sender","nodeType":"MemberAccess","src":"20317:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"baseExpression":{"id":61882,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61852,"src":"20367:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61884,"indexExpression":{"id":61883,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"20377:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20367:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61881,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"20349:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20349:31:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":61886,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61849,"src":"20402:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61888,"indexExpression":{"id":61887,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"20413:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20402:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":61889,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61852,"src":"20437:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61891,"indexExpression":{"id":61890,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"20447:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20437:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61878,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"20287:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":61892,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20287:180:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"arguments":[{"baseExpression":{"id":61895,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61855,"src":"20494:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":61897,"indexExpression":{"id":61896,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"20502:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20494:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":61898,"name":"refundAmounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61858,"src":"20506:13:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":61900,"indexExpression":{"id":61899,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"20520:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20506:16:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":61893,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48141,"src":"20485:4:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$48141_$","typeString":"type(library Math)"}},"id":61894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20490:3:114","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":46770,"src":"20485:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":61901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20485:38:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":61876,"name":"Math","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":48141,"src":"20261:4:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Math_$48141_$","typeString":"type(library Math)"}},"id":61877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20266:3:114","memberName":"min","nodeType":"MemberAccess","referencedDeclaration":46770,"src":"20261:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256,uint256) pure returns (uint256)"}},"id":61902,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20261:276:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"20238:299:114"},{"expression":{"arguments":[{"arguments":[{"id":61907,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"20601:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":61906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20593:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61905,"name":"address","nodeType":"ElementaryTypeName","src":"20593:7:114","typeDescriptions":{}}},"id":61908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20593:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":61909,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61852,"src":"20702:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61911,"indexExpression":{"id":61910,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"20712:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20702:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":61912,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61849,"src":"20732:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61914,"indexExpression":{"id":61913,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"20743:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20732:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61915,"name":"refundAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61875,"src":"20763:12:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61904,"name":"_payAttesterWithSelector","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62022,"src":"20551:24:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":61916,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20551:238:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61917,"nodeType":"ExpressionStatement","src":"20551:238:114"},{"expression":{"arguments":[{"expression":{"id":61919,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"20977:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61920,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20981:6:114","memberName":"sender","nodeType":"MemberAccess","src":"20977:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":61922,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21023:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61923,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21027:6:114","memberName":"sender","nodeType":"MemberAccess","src":"21023:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61921,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"21005:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21005:29:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":61925,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61849,"src":"21052:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61927,"indexExpression":{"id":61926,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"21063:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21052:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":61928,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61852,"src":"21083:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61930,"indexExpression":{"id":61929,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"21093:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21083:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":61931,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61855,"src":"21113:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":61933,"indexExpression":{"id":61932,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"21121:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21113:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61918,"name":"_slashStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61796,"src":"20948:11:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256,address,address,uint256)"}},"id":61934,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20948:189:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61935,"nodeType":"ExpressionStatement","src":"20948:189:114"},{"expression":{"arguments":[{"expression":{"id":61937,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21183:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61938,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21187:6:114","memberName":"sender","nodeType":"MemberAccess","src":"21183:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"id":61940,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"21229:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":61941,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"21233:6:114","memberName":"sender","nodeType":"MemberAccess","src":"21229:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":61939,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"21211:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":61942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21211:29:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":61943,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61849,"src":"21258:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61945,"indexExpression":{"id":61944,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"21269:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21258:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":61946,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61852,"src":"21289:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61948,"indexExpression":{"id":61947,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"21299:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21289:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":61936,"name":"_slashUnstake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61846,"src":"21152:13:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$","typeString":"function (address,uint256,address,address)"}},"id":61949,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21152:163:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61950,"nodeType":"ExpressionStatement","src":"21152:163:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":61870,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61867,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"19970:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":61868,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61852,"src":"19974:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":61869,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19984:6:114","memberName":"length","nodeType":"MemberAccess","src":"19974:16:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19970:20:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":61952,"initializationExpression":{"assignments":[61864],"declarations":[{"constant":false,"id":61864,"mutability":"mutable","name":"i","nameLocation":"19963:1:114","nodeType":"VariableDeclaration","scope":61952,"src":"19955:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61863,"name":"uint256","nodeType":"ElementaryTypeName","src":"19955:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":61866,"initialValue":{"hexValue":"30","id":61865,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19967:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"19955:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":61872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19992:3:114","subExpression":{"id":61871,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61864,"src":"19992:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61873,"nodeType":"ExpressionStatement","src":"19992:3:114"},"nodeType":"ForStatement","src":"19950:1376:114"}]},"baseFunctions":[62678],"functionSelector":"a885c975","implemented":true,"kind":"function","modifiers":[{"id":61861,"kind":"modifierInvocation","modifierName":{"id":61860,"name":"nonReentrant","nameLocations":["19927:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":44717,"src":"19927:12:114"},"nodeType":"ModifierInvocation","src":"19927:12:114"}],"name":"slash","nameLocation":"19753:5:114","parameters":{"id":61859,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61849,"mutability":"mutable","name":"custodians","nameLocation":"19787:10:114","nodeType":"VariableDeclaration","scope":61954,"src":"19768:29:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":61847,"name":"address","nodeType":"ElementaryTypeName","src":"19768:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":61848,"nodeType":"ArrayTypeName","src":"19768:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":61852,"mutability":"mutable","name":"attesters","nameLocation":"19826:9:114","nodeType":"VariableDeclaration","scope":61954,"src":"19807:28:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":61850,"name":"address","nodeType":"ElementaryTypeName","src":"19807:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":61851,"nodeType":"ArrayTypeName","src":"19807:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":61855,"mutability":"mutable","name":"amounts","nameLocation":"19864:7:114","nodeType":"VariableDeclaration","scope":61954,"src":"19845:26:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":61853,"name":"uint256","nodeType":"ElementaryTypeName","src":"19845:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61854,"nodeType":"ArrayTypeName","src":"19845:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":61858,"mutability":"mutable","name":"refundAmounts","nameLocation":"19900:13:114","nodeType":"VariableDeclaration","scope":61954,"src":"19881:32:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":61856,"name":"uint256","nodeType":"ElementaryTypeName","src":"19881:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":61857,"nodeType":"ArrayTypeName","src":"19881:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"src":"19758:161:114"},"returnParameters":{"id":61862,"nodeType":"ParameterList","parameters":[],"src":"19940:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62022,"nodeType":"FunctionDefinition","src":"21690:1458:114","nodes":[],"body":{"id":62021,"nodeType":"Block","src":"21838:1310:114","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":61971,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":61966,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61957,"src":"21852:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":61969,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"21868:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":61968,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21860:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61967,"name":"address","nodeType":"ElementaryTypeName","src":"21860:7:114","typeDescriptions":{}}},"id":61970,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21860:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21852:21:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":62019,"nodeType":"Block","src":"22370:772:114","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62001,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":61998,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"22752:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":61997,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"22744:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61996,"name":"address","nodeType":"ElementaryTypeName","src":"22744:7:114","typeDescriptions":{}}},"id":61999,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22744:14:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":62000,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61961,"src":"22762:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22744:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":62017,"nodeType":"Block","src":"22951:181:114","statements":[{"expression":{"arguments":[{"id":62011,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61957,"src":"23083:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62012,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61959,"src":"23089:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62013,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61961,"src":"23099:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62014,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61963,"src":"23110:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":62010,"name":"_payAttesterFromExternalViaCustodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62195,"src":"23046:36:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":62015,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23046:71:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62016,"nodeType":"ExpressionStatement","src":"23046:71:114"}]},"id":62018,"nodeType":"IfStatement","src":"22740:392:114","trueBody":{"id":62009,"nodeType":"Block","src":"22773:172:114","statements":[{"expression":{"arguments":[{"id":62003,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61957,"src":"22896:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62004,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61959,"src":"22902:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62005,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61961,"src":"22912:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62006,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61963,"src":"22923:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":62002,"name":"_payAttesterFromExternalDirectly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62152,"src":"22863:32:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":62007,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22863:67:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62008,"nodeType":"ExpressionStatement","src":"22863:67:114"}]}}]},"id":62020,"nodeType":"IfStatement","src":"21848:1294:114","trueBody":{"id":61995,"nodeType":"Block","src":"21875:489:114","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":61977,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":61974,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"21953:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":61973,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21945:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":61972,"name":"address","nodeType":"ElementaryTypeName","src":"21945:7:114","typeDescriptions":{}}},"id":61975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21945:14:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":61976,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61961,"src":"21963:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21945:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":61993,"nodeType":"Block","src":"22156:198:114","statements":[{"expression":{"arguments":[{"id":61987,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61957,"src":"22305:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61988,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61959,"src":"22311:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61989,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61961,"src":"22321:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61990,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61963,"src":"22332:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61986,"name":"_payAttesterFromContractViaCustodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62110,"src":"22268:36:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":61991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22268:71:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61992,"nodeType":"ExpressionStatement","src":"22268:71:114"}]},"id":61994,"nodeType":"IfStatement","src":"21941:413:114","trueBody":{"id":61985,"nodeType":"Block","src":"21974:176:114","statements":[{"expression":{"arguments":[{"id":61979,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61957,"src":"22101:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61980,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61959,"src":"22107:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61981,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61961,"src":"22117:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":61982,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61963,"src":"22128:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":61978,"name":"_payAttesterFromContractDirectly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62062,"src":"22068:32:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":61983,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22068:67:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":61984,"nodeType":"ExpressionStatement","src":"22068:67:114"}]}}]}}]},"documentation":{"id":61955,"nodeType":"StructuredDocumentation","src":"21338:347:114","text":"@notice Routes attester payment to appropriate function based on conditions\n @param from The address initiating the payment (this contract or external)\n @param attester The address receiving the payment\n @param custodian The custodian token address (or base token if direct payment)\n @param amount The amount to pay"},"implemented":true,"kind":"function","modifiers":[],"name":"_payAttesterWithSelector","nameLocation":"21699:24:114","parameters":{"id":61964,"nodeType":"ParameterList","parameters":[{"constant":false,"id":61957,"mutability":"mutable","name":"from","nameLocation":"21741:4:114","nodeType":"VariableDeclaration","scope":62022,"src":"21733:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61956,"name":"address","nodeType":"ElementaryTypeName","src":"21733:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61959,"mutability":"mutable","name":"attester","nameLocation":"21763:8:114","nodeType":"VariableDeclaration","scope":62022,"src":"21755:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61958,"name":"address","nodeType":"ElementaryTypeName","src":"21755:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61961,"mutability":"mutable","name":"custodian","nameLocation":"21789:9:114","nodeType":"VariableDeclaration","scope":62022,"src":"21781:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":61960,"name":"address","nodeType":"ElementaryTypeName","src":"21781:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":61963,"mutability":"mutable","name":"amount","nameLocation":"21816:6:114","nodeType":"VariableDeclaration","scope":62022,"src":"21808:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":61962,"name":"uint256","nodeType":"ElementaryTypeName","src":"21808:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"21723:105:114"},"returnParameters":{"id":61965,"nodeType":"ParameterList","parameters":[],"src":"21838:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":62062,"nodeType":"FunctionDefinition","src":"23282:313:114","nodes":[],"body":{"id":62061,"nodeType":"Block","src":"23400:195:114","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62035,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62025,"src":"23418:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":62038,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23434:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":62037,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23426:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62036,"name":"address","nodeType":"ElementaryTypeName","src":"23426:7:114","typeDescriptions":{}}},"id":62039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23426:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23418:21:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c792031","id":62041,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23441:35:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_0f1708bf867ac54e96e29dd93f681d12908fbf35a8ede654650d46510a77cb5d","typeString":"literal_string \"Only contract can call directly 1\""},"value":"Only contract can call directly 1"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0f1708bf867ac54e96e29dd93f681d12908fbf35a8ede654650d46510a77cb5d","typeString":"literal_string \"Only contract can call directly 1\""}],"id":62034,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23410:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62042,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23410:67:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62043,"nodeType":"ExpressionStatement","src":"23410:67:114"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62050,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":62047,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"23503:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":62046,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23495:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62045,"name":"address","nodeType":"ElementaryTypeName","src":"23495:7:114","typeDescriptions":{}}},"id":62048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23495:14:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":62049,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62029,"src":"23513:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23495:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420757365206261736520746f6b656e","id":62051,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23524:21:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_bc613066773cc3393ba2034b10aecd37cf0fd2b9ca236e3823d8166e2e771fe3","typeString":"literal_string \"Must use base token\""},"value":"Must use base token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bc613066773cc3393ba2034b10aecd37cf0fd2b9ca236e3823d8166e2e771fe3","typeString":"literal_string \"Must use base token\""}],"id":62044,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23487:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62052,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23487:59:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62053,"nodeType":"ExpressionStatement","src":"23487:59:114"},{"expression":{"arguments":[{"id":62057,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62027,"src":"23571:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62058,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62031,"src":"23581:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":62054,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"23556:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"id":62056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23562:8:114","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":43771,"src":"23556:14:114","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":62059,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23556:32:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62060,"nodeType":"ExpressionStatement","src":"23556:32:114"}]},"documentation":{"id":62023,"nodeType":"StructuredDocumentation","src":"23154:59:114","text":"@notice Contract pays attester directly with base token"},"implemented":true,"kind":"function","modifiers":[],"name":"_payAttesterFromContractDirectly","nameLocation":"23291:32:114","parameters":{"id":62032,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62025,"mutability":"mutable","name":"from","nameLocation":"23332:4:114","nodeType":"VariableDeclaration","scope":62062,"src":"23324:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62024,"name":"address","nodeType":"ElementaryTypeName","src":"23324:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62027,"mutability":"mutable","name":"attester","nameLocation":"23346:8:114","nodeType":"VariableDeclaration","scope":62062,"src":"23338:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62026,"name":"address","nodeType":"ElementaryTypeName","src":"23338:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62029,"mutability":"mutable","name":"custodian","nameLocation":"23364:9:114","nodeType":"VariableDeclaration","scope":62062,"src":"23356:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62028,"name":"address","nodeType":"ElementaryTypeName","src":"23356:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62031,"mutability":"mutable","name":"amount","nameLocation":"23383:6:114","nodeType":"VariableDeclaration","scope":62062,"src":"23375:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62030,"name":"uint256","nodeType":"ElementaryTypeName","src":"23375:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23323:67:114"},"returnParameters":{"id":62033,"nodeType":"ParameterList","parameters":[],"src":"23400:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":62110,"nodeType":"FunctionDefinition","src":"23664:394:114","nodes":[],"body":{"id":62109,"nodeType":"Block","src":"23786:272:114","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62075,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62065,"src":"23804:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":62078,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"23820:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":62077,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23812:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62076,"name":"address","nodeType":"ElementaryTypeName","src":"23812:7:114","typeDescriptions":{}}},"id":62079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23812:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23804:21:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c792032","id":62081,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23827:35:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_55315d8a57d191891b5e288e7e61a0e55314dfa6f15f2961a8a3eb948b6a731c","typeString":"literal_string \"Only contract can call directly 2\""},"value":"Only contract can call directly 2"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_55315d8a57d191891b5e288e7e61a0e55314dfa6f15f2961a8a3eb948b6a731c","typeString":"literal_string \"Only contract can call directly 2\""}],"id":62074,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23796:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23796:67:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62083,"nodeType":"ExpressionStatement","src":"23796:67:114"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62090,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":62087,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"23889:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":62086,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"23881:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62085,"name":"address","nodeType":"ElementaryTypeName","src":"23881:7:114","typeDescriptions":{}}},"id":62088,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23881:14:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":62089,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62069,"src":"23899:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"23881:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d7573742075736520637573746f6469616e20746f6b656e","id":62091,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"23910:26:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_625c61961be03bbe0874e1337fdd6dfea88bf797382890551820b152199956ec","typeString":"literal_string \"Must use custodian token\""},"value":"Must use custodian token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_625c61961be03bbe0874e1337fdd6dfea88bf797382890551820b152199956ec","typeString":"literal_string \"Must use custodian token\""}],"id":62084,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"23873:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62092,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23873:64:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62093,"nodeType":"ExpressionStatement","src":"23873:64:114"},{"expression":{"arguments":[{"id":62097,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62069,"src":"23961:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62098,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62071,"src":"23972:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":62094,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"23947:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"id":62096,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23953:7:114","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":43791,"src":"23947:13:114","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":62099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23947:32:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62100,"nodeType":"ExpressionStatement","src":"23947:32:114"},{"expression":{"arguments":[{"id":62105,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62067,"src":"24034:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62106,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62071,"src":"24044:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":62102,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62069,"src":"24005:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62101,"name":"ICustodianToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63461,"src":"23989:15:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICustodianToken_$63461_$","typeString":"type(contract ICustodianToken)"}},"id":62103,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23989:26:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICustodianToken_$63461","typeString":"contract ICustodianToken"}},"id":62104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24016:17:114","memberName":"buyCustodialToken","nodeType":"MemberAccess","referencedDeclaration":63451,"src":"23989:44:114","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":62107,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23989:62:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62108,"nodeType":"ExpressionStatement","src":"23989:62:114"}]},"documentation":{"id":62063,"nodeType":"StructuredDocumentation","src":"23601:58:114","text":"@notice Contract pays attester through custodian token"},"implemented":true,"kind":"function","modifiers":[],"name":"_payAttesterFromContractViaCustodian","nameLocation":"23673:36:114","parameters":{"id":62072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62065,"mutability":"mutable","name":"from","nameLocation":"23718:4:114","nodeType":"VariableDeclaration","scope":62110,"src":"23710:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62064,"name":"address","nodeType":"ElementaryTypeName","src":"23710:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62067,"mutability":"mutable","name":"attester","nameLocation":"23732:8:114","nodeType":"VariableDeclaration","scope":62110,"src":"23724:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62066,"name":"address","nodeType":"ElementaryTypeName","src":"23724:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62069,"mutability":"mutable","name":"custodian","nameLocation":"23750:9:114","nodeType":"VariableDeclaration","scope":62110,"src":"23742:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62068,"name":"address","nodeType":"ElementaryTypeName","src":"23742:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62071,"mutability":"mutable","name":"amount","nameLocation":"23769:6:114","nodeType":"VariableDeclaration","scope":62110,"src":"23761:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62070,"name":"uint256","nodeType":"ElementaryTypeName","src":"23761:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"23709:67:114"},"returnParameters":{"id":62073,"nodeType":"ParameterList","parameters":[],"src":"23786:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":62152,"nodeType":"FunctionDefinition","src":"24467:315:114","nodes":[],"body":{"id":62151,"nodeType":"Block","src":"24585:197:114","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62129,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":62123,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24603:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":62124,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24607:6:114","memberName":"sender","nodeType":"MemberAccess","src":"24603:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":62127,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"24625:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":62126,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24617:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62125,"name":"address","nodeType":"ElementaryTypeName","src":"24617:7:114","typeDescriptions":{}}},"id":62128,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24617:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"24603:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c792065787465726e616c2063616c6c73","id":62130,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24632:21:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_367278d280804749c40a2b54193b2d030c9f08a76b2a9338e0b2e7109240e55e","typeString":"literal_string \"Only external calls\""},"value":"Only external calls"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_367278d280804749c40a2b54193b2d030c9f08a76b2a9338e0b2e7109240e55e","typeString":"literal_string \"Only external calls\""}],"id":62122,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24595:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62131,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24595:59:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62132,"nodeType":"ExpressionStatement","src":"24595:59:114"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62139,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":62136,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"24680:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":62135,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"24672:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62134,"name":"address","nodeType":"ElementaryTypeName","src":"24672:7:114","typeDescriptions":{}}},"id":62137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24672:14:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":62138,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62117,"src":"24690:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"24672:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d75737420757365206261736520746f6b656e","id":62140,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"24701:21:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_bc613066773cc3393ba2034b10aecd37cf0fd2b9ca236e3823d8166e2e771fe3","typeString":"literal_string \"Must use base token\""},"value":"Must use base token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bc613066773cc3393ba2034b10aecd37cf0fd2b9ca236e3823d8166e2e771fe3","typeString":"literal_string \"Must use base token\""}],"id":62133,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24664:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24664:59:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62142,"nodeType":"ExpressionStatement","src":"24664:59:114"},{"expression":{"arguments":[{"id":62146,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62113,"src":"24752:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62147,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62115,"src":"24758:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62148,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62119,"src":"24768:6:114","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":62143,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"24733:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}},"id":62145,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24739:12:114","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":43803,"src":"24733:18:114","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":62149,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24733:42:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62150,"nodeType":"ExpressionStatement","src":"24733:42:114"}]},"documentation":{"id":62111,"nodeType":"StructuredDocumentation","src":"24064:67:114","text":"@notice External account pays attester directly with base token"},"implemented":true,"kind":"function","modifiers":[],"name":"_payAttesterFromExternalDirectly","nameLocation":"24476:32:114","parameters":{"id":62120,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62113,"mutability":"mutable","name":"from","nameLocation":"24517:4:114","nodeType":"VariableDeclaration","scope":62152,"src":"24509:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62112,"name":"address","nodeType":"ElementaryTypeName","src":"24509:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62115,"mutability":"mutable","name":"attester","nameLocation":"24531:8:114","nodeType":"VariableDeclaration","scope":62152,"src":"24523:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62114,"name":"address","nodeType":"ElementaryTypeName","src":"24523:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62117,"mutability":"mutable","name":"custodian","nameLocation":"24549:9:114","nodeType":"VariableDeclaration","scope":62152,"src":"24541:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62116,"name":"address","nodeType":"ElementaryTypeName","src":"24541:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62119,"mutability":"mutable","name":"amount","nameLocation":"24568:6:114","nodeType":"VariableDeclaration","scope":62152,"src":"24560:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62118,"name":"uint256","nodeType":"ElementaryTypeName","src":"24560:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24508:67:114"},"returnParameters":{"id":62121,"nodeType":"ParameterList","parameters":[],"src":"24585:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":62195,"nodeType":"FunctionDefinition","src":"24859:354:114","nodes":[],"body":{"id":62194,"nodeType":"Block","src":"24981:232:114","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62171,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":62165,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"24999:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":62166,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25003:6:114","memberName":"sender","nodeType":"MemberAccess","src":"24999:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":62169,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"25021:4:114","typeDescriptions":{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_MovementStaking_$62379","typeString":"contract MovementStaking"}],"id":62168,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25013:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62167,"name":"address","nodeType":"ElementaryTypeName","src":"25013:7:114","typeDescriptions":{}}},"id":62170,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25013:13:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"24999:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4f6e6c792065787465726e616c2063616c6c73","id":62172,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25028:21:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_367278d280804749c40a2b54193b2d030c9f08a76b2a9338e0b2e7109240e55e","typeString":"literal_string \"Only external calls\""},"value":"Only external calls"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_367278d280804749c40a2b54193b2d030c9f08a76b2a9338e0b2e7109240e55e","typeString":"literal_string \"Only external calls\""}],"id":62164,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"24991:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62173,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24991:59:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62174,"nodeType":"ExpressionStatement","src":"24991:59:114"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":62181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":62178,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62398,"src":"25076:5:114","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_IERC20_$43804","typeString":"contract IERC20"}],"id":62177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"25068:7:114","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":62176,"name":"address","nodeType":"ElementaryTypeName","src":"25068:7:114","typeDescriptions":{}}},"id":62179,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25068:14:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":62180,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62159,"src":"25086:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"25068:27:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4d7573742075736520637573746f6469616e20746f6b656e","id":62182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"25097:26:114","typeDescriptions":{"typeIdentifier":"t_stringliteral_625c61961be03bbe0874e1337fdd6dfea88bf797382890551820b152199956ec","typeString":"literal_string \"Must use custodian token\""},"value":"Must use custodian token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_625c61961be03bbe0874e1337fdd6dfea88bf797382890551820b152199956ec","typeString":"literal_string \"Must use custodian token\""}],"id":62175,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"25060:7:114","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":62183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25060:64:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62184,"nodeType":"ExpressionStatement","src":"25060:64:114"},{"expression":{"arguments":[{"id":62189,"name":"from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62155,"src":"25183:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62190,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62157,"src":"25189:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62191,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62161,"src":"25199:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":62186,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62159,"src":"25150:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62185,"name":"ICustodianToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":63461,"src":"25134:15:114","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ICustodianToken_$63461_$","typeString":"type(contract ICustodianToken)"}},"id":62187,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25134:26:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ICustodianToken_$63461","typeString":"contract ICustodianToken"}},"id":62188,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25161:21:114","memberName":"buyCustodialTokenFrom","nodeType":"MemberAccess","referencedDeclaration":63460,"src":"25134:48:114","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,uint256) external"}},"id":62192,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25134:72:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62193,"nodeType":"ExpressionStatement","src":"25134:72:114"}]},"documentation":{"id":62153,"nodeType":"StructuredDocumentation","src":"24788:66:114","text":"@notice External account pays attester through custodian token"},"implemented":true,"kind":"function","modifiers":[],"name":"_payAttesterFromExternalViaCustodian","nameLocation":"24868:36:114","parameters":{"id":62162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62155,"mutability":"mutable","name":"from","nameLocation":"24913:4:114","nodeType":"VariableDeclaration","scope":62195,"src":"24905:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62154,"name":"address","nodeType":"ElementaryTypeName","src":"24905:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62157,"mutability":"mutable","name":"attester","nameLocation":"24927:8:114","nodeType":"VariableDeclaration","scope":62195,"src":"24919:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62156,"name":"address","nodeType":"ElementaryTypeName","src":"24919:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62159,"mutability":"mutable","name":"custodian","nameLocation":"24945:9:114","nodeType":"VariableDeclaration","scope":62195,"src":"24937:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62158,"name":"address","nodeType":"ElementaryTypeName","src":"24937:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62161,"mutability":"mutable","name":"amount","nameLocation":"24964:6:114","nodeType":"VariableDeclaration","scope":62195,"src":"24956:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62160,"name":"uint256","nodeType":"ElementaryTypeName","src":"24956:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"24904:67:114"},"returnParameters":{"id":62163,"nodeType":"ParameterList","parameters":[],"src":"24981:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":62216,"nodeType":"FunctionDefinition","src":"25461:244:114","nodes":[],"body":{"id":62215,"nodeType":"Block","src":"25615:90:114","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":62208,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"25658:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":62209,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25662:6:114","memberName":"sender","nodeType":"MemberAccess","src":"25658:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62210,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62198,"src":"25670:8:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62211,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62202,"src":"25680:9:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62212,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62200,"src":"25691:6:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":62207,"name":"_payAttesterFromExternalDirectly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62152,"src":"25625:32:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":62213,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25625:73:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62214,"nodeType":"ExpressionStatement","src":"25625:73:114"}]},"baseFunctions":[62769],"documentation":{"id":62196,"nodeType":"StructuredDocumentation","src":"25219:237:114","text":"@notice Domain rewards an attester\n @param attester The attester to reward\n @param amount The amount to reward\n @param custodian The custodian of the token from which to reward the attester, here it is the domain"},"functionSelector":"5e00bf46","implemented":true,"kind":"function","modifiers":[{"id":62205,"kind":"modifierInvocation","modifierName":{"id":62204,"name":"nonReentrant","nameLocations":["25602:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":44717,"src":"25602:12:114"},"nodeType":"ModifierInvocation","src":"25602:12:114"}],"name":"rewardFromDomain","nameLocation":"25470:16:114","parameters":{"id":62203,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62198,"mutability":"mutable","name":"attester","nameLocation":"25504:8:114","nodeType":"VariableDeclaration","scope":62216,"src":"25496:16:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62197,"name":"address","nodeType":"ElementaryTypeName","src":"25496:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62200,"mutability":"mutable","name":"amount","nameLocation":"25530:6:114","nodeType":"VariableDeclaration","scope":62216,"src":"25522:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62199,"name":"uint256","nodeType":"ElementaryTypeName","src":"25522:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":62202,"mutability":"mutable","name":"custodian","nameLocation":"25554:9:114","nodeType":"VariableDeclaration","scope":62216,"src":"25546:17:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62201,"name":"address","nodeType":"ElementaryTypeName","src":"25546:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"25486:108:114"},"returnParameters":{"id":62206,"nodeType":"ParameterList","parameters":[],"src":"25615:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62259,"nodeType":"FunctionDefinition","src":"25966:457:114","nodes":[],"body":{"id":62258,"nodeType":"Block","src":"26126:297:114","nodes":[],"statements":[{"body":{"id":62256,"nodeType":"Block","src":"26307:110:114","statements":[{"expression":{"arguments":[{"expression":{"id":62243,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"26354:3:114","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":62244,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26358:6:114","memberName":"sender","nodeType":"MemberAccess","src":"26354:10:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":62245,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62220,"src":"26366:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":62247,"indexExpression":{"id":62246,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62232,"src":"26376:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26366:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":62248,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62226,"src":"26380:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":62250,"indexExpression":{"id":62249,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62232,"src":"26391:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26380:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":62251,"name":"amounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62223,"src":"26395:7:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":62253,"indexExpression":{"id":62252,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62232,"src":"26403:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26395:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":62242,"name":"_payAttesterFromExternalDirectly","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62152,"src":"26321:32:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,address,address,uint256)"}},"id":62254,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26321:85:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62255,"nodeType":"ExpressionStatement","src":"26321:85:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":62238,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62235,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62232,"src":"26280:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":62236,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62220,"src":"26284:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}},"id":62237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26294:6:114","memberName":"length","nodeType":"MemberAccess","src":"26284:16:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26280:20:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62257,"initializationExpression":{"assignments":[62232],"declarations":[{"constant":false,"id":62232,"mutability":"mutable","name":"i","nameLocation":"26273:1:114","nodeType":"VariableDeclaration","scope":62257,"src":"26265:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62231,"name":"uint256","nodeType":"ElementaryTypeName","src":"26265:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62234,"initialValue":{"hexValue":"30","id":62233,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26277:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26265:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":62240,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26302:3:114","subExpression":{"id":62239,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62232,"src":"26302:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62241,"nodeType":"ExpressionStatement","src":"26302:3:114"},"nodeType":"ForStatement","src":"26260:157:114"}]},"baseFunctions":[62781],"documentation":{"id":62217,"nodeType":"StructuredDocumentation","src":"25711:250:114","text":"@notice An array of custodians reward an array of attesters\n @param attesters The attesters to reward\n @param amounts The amounts to reward\n @param custodians The custodians of the token from which to reward the attesters "},"functionSelector":"4e76a139","implemented":true,"kind":"function","modifiers":[{"id":62229,"kind":"modifierInvocation","modifierName":{"id":62228,"name":"nonReentrant","nameLocations":["26113:12:114"],"nodeType":"IdentifierPath","referencedDeclaration":44717,"src":"26113:12:114"},"nodeType":"ModifierInvocation","src":"26113:12:114"}],"name":"rewardArray","nameLocation":"25975:11:114","parameters":{"id":62227,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62220,"mutability":"mutable","name":"attesters","nameLocation":"26015:9:114","nodeType":"VariableDeclaration","scope":62259,"src":"25996:28:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":62218,"name":"address","nodeType":"ElementaryTypeName","src":"25996:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":62219,"nodeType":"ArrayTypeName","src":"25996:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":62223,"mutability":"mutable","name":"amounts","nameLocation":"26053:7:114","nodeType":"VariableDeclaration","scope":62259,"src":"26034:26:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":62221,"name":"uint256","nodeType":"ElementaryTypeName","src":"26034:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62222,"nodeType":"ArrayTypeName","src":"26034:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":62226,"mutability":"mutable","name":"custodians","nameLocation":"26089:10:114","nodeType":"VariableDeclaration","scope":62259,"src":"26070:29:114","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":62224,"name":"address","nodeType":"ElementaryTypeName","src":"26070:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":62225,"nodeType":"ArrayTypeName","src":"26070:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"25986:119:114"},"returnParameters":{"id":62230,"nodeType":"ParameterList","parameters":[],"src":"26126:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":62274,"nodeType":"FunctionDefinition","src":"26593:140:114","nodes":[],"body":{"id":62273,"nodeType":"Block","src":"26685:48:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":62269,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62458,"src":"26705:14:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":62270,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62262,"src":"26721:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":62268,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39276,"src":"26695:9:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":62271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26695:31:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62272,"nodeType":"ExpressionStatement","src":"26695:31:114"}]},"baseFunctions":[62683],"documentation":{"id":62260,"nodeType":"StructuredDocumentation","src":"26431:157:114","text":"@notice Whitelist an address to be used as an attester or custodian. \n @notice Whitelisting means that the address is allowed to stake and unstake"},"functionSelector":"41566585","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":62265,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39114,"src":"26665:18:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":62266,"kind":"modifierInvocation","modifierName":{"id":62264,"name":"onlyRole","nameLocations":["26656:8:114"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"26656:8:114"},"nodeType":"ModifierInvocation","src":"26656:28:114"}],"name":"whitelistAddress","nameLocation":"26602:16:114","parameters":{"id":62263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62262,"mutability":"mutable","name":"addr","nameLocation":"26636:4:114","nodeType":"VariableDeclaration","scope":62274,"src":"26628:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62261,"name":"address","nodeType":"ElementaryTypeName","src":"26628:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26618:28:114"},"returnParameters":{"id":62267,"nodeType":"ParameterList","parameters":[],"src":"26685:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":62288,"nodeType":"FunctionDefinition","src":"26739:151:114","nodes":[],"body":{"id":62287,"nodeType":"Block","src":"26841:49:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":62283,"name":"WHITELIST_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62458,"src":"26862:14:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":62284,"name":"addr","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62276,"src":"26878:4:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":62282,"name":"revokeRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39295,"src":"26851:10:114","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":62285,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26851:32:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":62286,"nodeType":"ExpressionStatement","src":"26851:32:114"}]},"baseFunctions":[62688],"functionSelector":"286dd3f5","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":62279,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39114,"src":"26821:18:114","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":62280,"kind":"modifierInvocation","modifierName":{"id":62278,"name":"onlyRole","nameLocations":["26812:8:114"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"26812:8:114"},"nodeType":"ModifierInvocation","src":"26812:28:114"}],"name":"removeAddressFromWhitelist","nameLocation":"26748:26:114","parameters":{"id":62277,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62276,"mutability":"mutable","name":"addr","nameLocation":"26792:4:114","nodeType":"VariableDeclaration","scope":62288,"src":"26784:12:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62275,"name":"address","nodeType":"ElementaryTypeName","src":"26784:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"26774:28:114"},"returnParameters":{"id":62281,"nodeType":"ParameterList","parameters":[],"src":"26841:0:114"},"scope":62379,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":62362,"nodeType":"FunctionDefinition","src":"26982:542:114","nodes":[],"body":{"id":62361,"nodeType":"Block","src":"27090:434:114","nodes":[],"statements":[{"assignments":[62302],"declarations":[{"constant":false,"id":62302,"mutability":"mutable","name":"custodians","nameLocation":"27117:10:114","nodeType":"VariableDeclaration","scope":62361,"src":"27100:27:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":62300,"name":"address","nodeType":"ElementaryTypeName","src":"27100:7:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":62301,"nodeType":"ArrayTypeName","src":"27100:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":62306,"initialValue":{"arguments":[{"id":62304,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62291,"src":"27154:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62303,"name":"getRegisteredCustodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60675,"src":"27130:23:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (address[] memory)"}},"id":62305,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27130:31:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"27100:61:114"},{"assignments":[62311],"declarations":[{"constant":false,"id":62311,"mutability":"mutable","name":"attesters","nameLocation":"27188:9:114","nodeType":"VariableDeclaration","scope":62361,"src":"27171:26:114","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":62309,"name":"address","nodeType":"ElementaryTypeName","src":"27171:7:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":62310,"nodeType":"ArrayTypeName","src":"27171:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":62315,"initialValue":{"arguments":[{"id":62313,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62291,"src":"27223:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62312,"name":"getRegisteredAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60729,"src":"27200:22:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view returns (address[] memory)"}},"id":62314,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27200:30:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"27171:59:114"},{"assignments":[62317],"declarations":[{"constant":false,"id":62317,"mutability":"mutable","name":"totalStake","nameLocation":"27248:10:114","nodeType":"VariableDeclaration","scope":62361,"src":"27240:18:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62316,"name":"uint256","nodeType":"ElementaryTypeName","src":"27240:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62319,"initialValue":{"hexValue":"30","id":62318,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27261:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27240:22:114"},{"body":{"id":62357,"nodeType":"Block","src":"27321:170:114","statements":[{"body":{"id":62355,"nodeType":"Block","src":"27382:99:114","statements":[{"expression":{"id":62353,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":62342,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62317,"src":"27400:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":62344,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62291,"src":"27423:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":62345,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62293,"src":"27431:5:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":62346,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62302,"src":"27438:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":62348,"indexExpression":{"id":62347,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62321,"src":"27449:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27438:13:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":62349,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62311,"src":"27453:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":62351,"indexExpression":{"id":62350,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62332,"src":"27463:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"27453:12:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":62343,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61273,"src":"27414:8:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view returns (uint256)"}},"id":62352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27414:52:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27400:66:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62354,"nodeType":"ExpressionStatement","src":"27400:66:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":62338,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62335,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62332,"src":"27355:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":62336,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62311,"src":"27359:9:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":62337,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27369:6:114","memberName":"length","nodeType":"MemberAccess","src":"27359:16:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27355:20:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62356,"initializationExpression":{"assignments":[62332],"declarations":[{"constant":false,"id":62332,"mutability":"mutable","name":"j","nameLocation":"27348:1:114","nodeType":"VariableDeclaration","scope":62356,"src":"27340:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62331,"name":"uint256","nodeType":"ElementaryTypeName","src":"27340:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62334,"initialValue":{"hexValue":"30","id":62333,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27352:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27340:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":62340,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27377:3:114","subExpression":{"id":62339,"name":"j","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62332,"src":"27377:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62341,"nodeType":"ExpressionStatement","src":"27377:3:114"},"nodeType":"ForStatement","src":"27335:146:114"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":62327,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":62324,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62321,"src":"27293:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":62325,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62302,"src":"27297:10:114","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":62326,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"27308:6:114","memberName":"length","nodeType":"MemberAccess","src":"27297:17:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27293:21:114","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":62358,"initializationExpression":{"assignments":[62321],"declarations":[{"constant":false,"id":62321,"mutability":"mutable","name":"i","nameLocation":"27286:1:114","nodeType":"VariableDeclaration","scope":62358,"src":"27278:9:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62320,"name":"uint256","nodeType":"ElementaryTypeName","src":"27278:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":62323,"initialValue":{"hexValue":"30","id":62322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27290:1:114","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"27278:13:114"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":62329,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"27316:3:114","subExpression":{"id":62328,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62321,"src":"27316:1:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":62330,"nodeType":"ExpressionStatement","src":"27316:3:114"},"nodeType":"ForStatement","src":"27273:218:114"},{"expression":{"id":62359,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62317,"src":"27507:10:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":62297,"id":62360,"nodeType":"Return","src":"27500:17:114"}]},"documentation":{"id":62289,"nodeType":"StructuredDocumentation","src":"26896:81:114","text":"@notice Computes total stake across all custodians and attesters for an epoch"},"functionSelector":"55bdbe4c","implemented":true,"kind":"function","modifiers":[],"name":"computeAllStake","nameLocation":"26991:15:114","parameters":{"id":62294,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62291,"mutability":"mutable","name":"domain","nameLocation":"27024:6:114","nodeType":"VariableDeclaration","scope":62362,"src":"27016:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62290,"name":"address","nodeType":"ElementaryTypeName","src":"27016:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":62293,"mutability":"mutable","name":"epoch","nameLocation":"27048:5:114","nodeType":"VariableDeclaration","scope":62362,"src":"27040:13:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62292,"name":"uint256","nodeType":"ElementaryTypeName","src":"27040:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27006:53:114"},"returnParameters":{"id":62297,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62296,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":62362,"src":"27081:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62295,"name":"uint256","nodeType":"ElementaryTypeName","src":"27081:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27080:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":62378,"nodeType":"FunctionDefinition","src":"27695:176:114","nodes":[],"body":{"id":62377,"nodeType":"Block","src":"27797:74:114","nodes":[],"statements":[{"expression":{"arguments":[{"id":62371,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62365,"src":"27830:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":62373,"name":"domain","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62365,"src":"27856:6:114","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":62372,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":61204,"src":"27838:17:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":62374,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27838:25:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":62370,"name":"computeAllStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62362,"src":"27814:15:114","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$","typeString":"function (address,uint256) view returns (uint256)"}},"id":62375,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27814:50:114","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":62369,"id":62376,"nodeType":"Return","src":"27807:57:114"}]},"baseFunctions":[62751],"documentation":{"id":62363,"nodeType":"StructuredDocumentation","src":"27530:160:114","text":"@notice Computes total stake across all custodians and attesters for the current accepting epoch\n @param domain The domain to compute total stake for"},"functionSelector":"574663a9","implemented":true,"kind":"function","modifiers":[],"name":"computeAllStakeForAcceptingEpoch","nameLocation":"27704:32:114","parameters":{"id":62366,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62365,"mutability":"mutable","name":"domain","nameLocation":"27754:6:114","nodeType":"VariableDeclaration","scope":62378,"src":"27746:14:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":62364,"name":"address","nodeType":"ElementaryTypeName","src":"27746:7:114","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"27736:30:114"},"returnParameters":{"id":62369,"nodeType":"ParameterList","parameters":[{"constant":false,"id":62368,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":62378,"src":"27788:7:114","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":62367,"name":"uint256","nodeType":"ElementaryTypeName","src":"27788:7:114","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"27787:9:114"},"scope":62379,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":60546,"name":"MovementStakingStorage","nameLocations":["798:22:114"],"nodeType":"IdentifierPath","referencedDeclaration":62459,"src":"798:22:114"},"id":60547,"nodeType":"InheritanceSpecifier","src":"798:22:114"},{"baseName":{"id":60548,"name":"IMovementStaking","nameLocations":["826:16:114"],"nodeType":"IdentifierPath","referencedDeclaration":62796,"src":"826:16:114"},"id":60549,"nodeType":"InheritanceSpecifier","src":"826:16:114"},{"baseName":{"id":60550,"name":"BaseStaking","nameLocations":["848:11:114"],"nodeType":"IdentifierPath","referencedDeclaration":62514,"src":"848:11:114"},"id":60551,"nodeType":"InheritanceSpecifier","src":"848:11:114"},{"baseName":{"id":60552,"name":"ReentrancyGuard","nameLocations":["865:15:114"],"nodeType":"IdentifierPath","referencedDeclaration":44753,"src":"865:15:114"},"id":60553,"nodeType":"InheritanceSpecifier","src":"865:15:114"}],"canonicalName":"MovementStaking","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[62379,44753,62514,39884,42904,39448,41211,46535,41590,40716,39702,62796,62459],"name":"MovementStaking","nameLocation":"775:15:114","scope":62380,"usedErrors":[39465,39468,39729,39734,41517,41520,43099,43112,44330,44623,44698,60560,62732,62734,62736],"usedEvents":[39473,41529,41538,41547,42852,62700,62712,62724,62730]}],"license":"UNLICENSED"},"id":114} +======= +{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","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":"WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeAllStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentAcceptingEpochByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"currentAcceptingEpoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"domainGenesisAccepted","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochDurationByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochByL1BlockTime","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextPresentEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredAttesters","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredCustodians","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getUnstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnstakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerDomain","inputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAddressFromWhitelist","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardArray","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardFromDomain","inputs":[{"name":"attester","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollOverEpoch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"custodians","type":"address[]","internalType":"address[]"},{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"refundAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakesByDomainEpochCustodian","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"unstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unstakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"whitelistAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AttesterEpochRolledOver","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterStaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterUnstaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EpochRolledOver","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CustodianTransferAmountMismatch","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EpochDurationNotSet","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisAlreadyAccepted","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"StakeExceedsGenesisStake","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b5060016009556080516132f161004260003960008181611f2801528181611f51015261209501526132f16000f3fe6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;1171:4:21;1128:48;;766:27108:111;;;;;;;;;-1:-1:-1;1857:1:57;2061:7;:21;766:27108:111;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;1474:208:112;;;;;;;;;;-1:-1:-1;1474:208:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1434:25:140;;;1422:2;1407:18;1474:208:112;1288:177:140;10872:215:111;;;;;;;;;;-1:-1:-1;10872:215:111;;;;;:::i;:::-;;:::i;2321:419::-;;;;;;;;;;-1:-1:-1;2321:419:111;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4287:406::-;;;;;;;;;;-1:-1:-1;4287:406:111;;;;;:::i;:::-;;:::i;:::-;;8307:134;;;;;;;;;;-1:-1:-1;8307:134:111;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;11409:381:111:-;;;;;;;;;;-1:-1:-1;11409:381:111;;;;;:::i;:::-;;:::i;26739:151::-;;;;;;;;;;-1:-1:-1;26739:151:111;;;;;:::i;:::-;;:::i;5246:136:19:-;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;1686:554:111:-;;;;;;;;;;-1:-1:-1;1686:554:111;;;;;:::i;:::-;;:::i;10462:330::-;;;;;;;;;;-1:-1:-1;10462:330:111;;;;;:::i;:::-;;:::i;6348:245:19:-;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;650:77:112:-;;;;;;;;;;-1:-1:-1;650:77:112;;;;;:::i;:::-;;;;;;;;;;;;;;11796:192:111;;;;;;;;;;-1:-1:-1;11796:192:111;;;;;:::i;:::-;;:::i;26593:140::-;;;;;;;;;;-1:-1:-1;26593:140:111;;;;;:::i;:::-;;:::i;2827:1107::-;;;;;;;;;;-1:-1:-1;2827:1107:111;;;;;:::i;:::-;;:::i;25966:457::-;;;;;;;;;;-1:-1:-1;25966:457:111;;;;;:::i;:::-;;:::i;4161:214:21:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;26982:542:111:-;;;;;;;;;;-1:-1:-1;26982:542:111;;;;;:::i;:::-;;:::i;27695:176::-;;;;;;;;;;-1:-1:-1;27695:176:111;;;;;:::i;:::-;;:::i;9069:182::-;;;;;;;;;;-1:-1:-1;9069:182:111;;;;;:::i;:::-;;:::i;4001:125::-;;;;;;;;;;-1:-1:-1;4001:125:111;;;;;:::i;:::-;-1:-1:-1;;;;;4090:29:111;4064:7;4090:29;;;:21;:29;;;;;;;4001:125;25461:244;;;;;;;;;;-1:-1:-1;25461:244:111;;;;;:::i;:::-;;:::i;13972:972::-;;;;;;;;;;-1:-1:-1;13972:972:111;;;;;:::i;:::-;;:::i;8661:180::-;;;;;;;;;;-1:-1:-1;8661:180:111;;;;;:::i;:::-;;:::i;2462:68:112:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2462:68:112;;10109:254:111;;;;;;;;;;-1:-1:-1;10109:254:111;;;;;:::i;:::-;;:::i;514:86:113:-;;;;;;;;;;;;;:::i;2186:152:112:-;;;;;;;;;;-1:-1:-1;2186:152:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4699:1563:111:-;;;;;;;;;;;;;:::i;9342:250::-;;;;;;;;;;-1:-1:-1;9342:250:111;;;;;:::i;:::-;;:::i;11173:230::-;;;;;;;;;;-1:-1:-1;11173:230:111;;;;;:::i;:::-;;:::i;2317:49:19:-;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;9689:326:111;;;;;;;;;;-1:-1:-1;9689:326:111;;;;;:::i;:::-;;:::i;19744:1588::-;;;;;;;;;;-1:-1:-1;19744:1588:111;;;;;:::i;:::-;;:::i;17307:108::-;;;;;;;;;;;;;:::i;1819:58:21:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;977:93:112:-;;;;;;;;;;-1:-1:-1;977:93:112;;;;;:::i;:::-;;;;;;;;;;;;;;12036:1885:111;;;;;;;;;;-1:-1:-1;12036:1885:111;;;;;:::i;:::-;;:::i;1051:125::-;;;;;;;;;;-1:-1:-1;1051:125:111;;;;;:::i;:::-;;:::i;2345:60:112:-;;;;;;;;;;-1:-1:-1;2345:60:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;1245:359:111;;;;;;;;;;-1:-1:-1;1245:359:111;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;8002:226:111:-;;;;;;;;;;-1:-1:-1;8002:226:111;;;;;:::i;:::-;;:::i;1832:210:112:-;;;;;;;;;;-1:-1:-1;1832:210:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:19;;;;;;;;;;-1:-1:-1;471:19:112;;;;-1:-1:-1;;;;;471:19:112;;;;;;-1:-1:-1;;;;;11791:32:140;;;11773:51;;11761:2;11746:18;471:19:112;11611:219:140;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;10872:215:111:-;-1:-1:-1;;;;;11026:36:111;;;11000:7;11026:36;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;10872:215;;;;;;:::o;2321:419::-;-1:-1:-1;;;;;2488:35:111;;2432:26;2488:35;;;:27;:35;;;;;2404:16;;2432:26;2488:44;;:42;:44::i;:::-;-1:-1:-1;;;;;2461:81:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2461:81:111;;2432:110;;2557:9;2552:156;-1:-1:-1;;;;;2576:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;2572:1;:48;2552:156;;;-1:-1:-1;;;;;2656:35:111;;;;;;:27;:35;;;;;:41;;2695:1;2656:38;:41::i;:::-;2641:9;2651:1;2641:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2641:56:111;;;:12;;;;;;;;;;;:56;2622:3;;2552:156;;;-1:-1:-1;2724:9:111;2321:419;-1:-1:-1;;2321:419:111:o;4287:406::-;4387:38;4417:6;4387:21;:38::i;:::-;4375:8;:50;;4367:104;;;;-1:-1:-1;;;4367:104:111;;12169:2:140;4367:104:111;;;12151:21:140;12208:2;12188:18;;;12181:30;12247:34;12227:18;;;12220:62;-1:-1:-1;;;12298:18:140;;;12291:39;12347:19;;4367:104:111;;;;;;;;;4500:25;4518:6;4500:17;:25::i;:::-;4489:8;:36;4481:92;;;;-1:-1:-1;;;4481:92:111;;12579:2:140;4481:92:111;;;12561:21:140;12618:2;12598:18;;;12591:30;12657:34;12637:18;;;12630:62;-1:-1:-1;;;12708:18:140;;;12701:41;12759:19;;4481:92:111;12377:407:140;4481:92:111;4591:10;-1:-1:-1;;;;;4591:20:111;;;4583:45;;;;-1:-1:-1;;;4583:45:111;;12991:2:140;4583:45:111;;;12973:21:140;13030:2;13010:18;;;13003:30;-1:-1:-1;;;13049:18:140;;;13042:42;13101:18;;4583:45:111;12789:336:140;4583:45:111;-1:-1:-1;;;;;4638:37:111;;;;;;;:29;:37;;;;;:48;4287:406::o;8307:134::-;-1:-1:-1;;;;;8397:37:111;8371:7;8397:37;;;:29;:37;;;;;;;8307:134::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;11409:381:111:-;11505:7;;;11559:195;-1:-1:-1;;;;;11583:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;11579:1;:49;11559:195;;;-1:-1:-1;;;;;11690:36:111;;;;;;:28;:36;;;;;11666:77;;11675:6;;11683:5;;11690:42;;11730:1;11690:39;:42::i;:::-;11734:8;11666;:77::i;:::-;11649:94;;;;:::i;:::-;;-1:-1:-1;11630:3:111;;11559:195;;;-1:-1:-1;11770:13:111;11409:381;-1:-1:-1;;;;11409:381:111:o;26739:151::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26851:32:111::1;-1:-1:-1::0;;;;;;;;;;;26878:4:111::1;26851:10;:32::i;:::-;26739:151:::0;;:::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;1686:554:111:-;-1:-1:-1;;;;;1983:36:111;;1926:27;1983:36;;;:28;:36;;;;;1770:16;;1926:27;1983:45;;:43;:45::i;:::-;-1:-1:-1;;;;;1956:82:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1956:82:111;;1926:112;;2053:9;2048:159;-1:-1:-1;;;;;2072:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;2068:1;:49;2048:159;;;-1:-1:-1;;;;;2154:36:111;;;;;;:28;:36;;;;;:42;;2194:1;2154:39;:42::i;:::-;2138:10;2149:1;2138:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2138:58:111;;;:13;;;;;;;;;;;:58;2119:3;;2048:159;;10462:330;10603:7;10641:144;10669:6;10693:25;10711:6;10693:17;:25::i;:::-;10736:9;10763:8;10641:10;:144::i;:::-;10622:163;10462:330;-1:-1:-1;;;;10462:330:111:o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;11796:192:111:-;11894:7;11920:61;11937:6;11945:25;11963:6;11945:17;:25::i;:::-;11972:8;11920:16;:61::i;26593:140::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26695:31:111::1;-1:-1:-1::0;;;;;;;;;;;26721:4:111::1;26695:9;:31::i;2827:1107::-:0;-1:-1:-1;;;;;3022:35:111;;2997:22;3022:35;;;:27;:35;;;;;2923:16;;2997:22;3022:44;;:42;:44::i;:::-;2997:69;;3123:27;3169:9;3164:258;3188:14;3184:1;:18;3164:258;;;-1:-1:-1;;;;;3242:35:111;;3223:16;3242:35;;;:27;:35;;;;;:41;;3281:1;3242:38;:41::i;:::-;3223:60;;3355:1;3301:51;3335:6;3343:8;3301:33;:51::i;:::-;:55;3297:115;;;3376:21;;;;:::i;:::-;;;;3297:115;-1:-1:-1;3204:3:111;;3164:258;;;;3476:32;3525:19;-1:-1:-1;;;;;3511:34:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3511:34:111;;3476:69;;3555:19;3593:9;3588:307;3612:14;3608:1;:18;3588:307;;;-1:-1:-1;;;;;3666:35:111;;3647:16;3666:35;;;:27;:35;;;;;:41;;3705:1;3666:38;:41::i;:::-;3647:60;;3779:1;3725:51;3759:6;3767:8;3725:33;:51::i;:::-;:55;3721:164;;;3831:8;3800:15;3816:11;3800:28;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3800:39:111;;;:28;;;;;;;;;;;:39;3857:13;;;;:::i;:::-;;;;3721:164;-1:-1:-1;3628:3:111;;3588:307;;;-1:-1:-1;3912:15:111;;2827:1107;-1:-1:-1;;;;;2827:1107:111:o;25966:457::-;2500:21:57;:19;:21::i;:::-;26265:9:111::1;26260:157;26280:20:::0;;::::1;26260:157;;;26321:85;26354:10;26366:9;;26376:1;26366:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26380:10;;26391:1;26380:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26395:7;;26403:1;26395:10;;;;;;;:::i;:::-;;;;;;;26321:32;:85::i;:::-;26302:3;;26260:157;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;25966:457:111;;;;;;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;26982:542:111:-;27081:7;27100:27;27130:31;27154:6;27130:23;:31::i;:::-;27100:61;;27171:26;27200:30;27223:6;27200:22;:30::i;:::-;27171:59;;27240:18;27278:9;27273:218;27297:10;:17;27293:1;:21;27273:218;;;27340:9;27335:146;27359:9;:16;27355:1;:20;27335:146;;;27414:52;27423:6;27431:5;27438:10;27449:1;27438:13;;;;;;;;:::i;:::-;;;;;;;27453:9;27463:1;27453:12;;;;;;;;:::i;:::-;;;;;;;27414:8;:52::i;:::-;27400:66;;;;:::i;:::-;;-1:-1:-1;27377:3:111;;27335:146;;;-1:-1:-1;27316:3:111;;27273:218;;;-1:-1:-1;27507:10:111;26982:542;-1:-1:-1;;;;;26982:542:111:o;27695:176::-;27788:7;27814:50;27830:6;27838:25;27856:6;27838:17;:25::i;9069:182::-;9148:7;9174:25;9192:6;9174:17;:25::i;:::-;:30;:70;;9211:29;9233:6;9211:21;:29::i;:::-;:33;;9243:1;9211:33;:::i;:::-;9174:70;;;9207:1;9167:77;9069:182;-1:-1:-1;;9069:182:111:o;25461:244::-;2500:21:57;:19;:21::i;:::-;25625:73:111::1;25658:10;25670:8;25680:9;25691:6;25625:32;:73::i;:::-;2542:20:57::0;1857:1;3068:7;:21;2888:208;13972:972:111;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;14448:304:111::2;14473:6;14633:42;14668:6;14633:34;:42::i;:::-;14689:9;14712:10;14736:6;14448:11;:304::i;:::-;14874:9;-1:-1:-1::0;;;;;14768:169:111::2;14818:42;14853:6;14818:34;:42::i;:::-;14768:169;::::0;;14897:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;14768:169:111;::::2;::::0;::::2;::::0;13679:18:140;14768:169:111::2;;;;;;;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;8661:180:111;8742:7;8768:25;8786:6;8768:17;:25::i;:::-;:30;:66;;8805:25;8823:6;8805:17;:25::i;10109:254::-;-1:-1:-1;;;;;10282:46:111;;;10256:7;10282:46;;;:38;:46;;;;;;;;:53;;;;;;;;;:64;;;;;;;;;;;:74;;;;;;;;;;;;10109:254::o;514:86:113:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;573:20:113::1;:18;:20::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;514:86:113:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4699:1563:111:-;2500:21:57;:19;:21::i;:::-;4779:10:111::1;4762:14;4804:29:::0;;;:21:::1;:29;::::0;;;;;::::1;;4800:66;;;4842:24;;-1:-1:-1::0;;;4842:24:111::1;;;;;;;;;;;4800:66;-1:-1:-1::0;;;;;4876:29:111;::::1;;::::0;;;:21:::1;:29;::::0;;;;;;;:36;;-1:-1:-1;;4876:36:111::1;4908:4;4876:36:::0;;::::1;::::0;;;4938:29;;;;;;4931:41:::1;;;;:::i;:::-;5094:29;5116:6;5094:21;:29::i;:::-;-1:-1:-1::0;;;;;5054:37:111;::::1;;::::0;;;:29:::1;:37;::::0;;;;:69;;;;5134:1122:::1;-1:-1:-1::0;;;;;5158:35:111;::::1;;::::0;;;:27:::1;:35;::::0;;;;:44:::1;::::0;:42:::1;:44::i;:::-;5154:1;:48;5134:1122;;;-1:-1:-1::0;;;;;5242:35:111;::::1;5223:16;5242:35:::0;;;:27:::1;:35;::::0;;;;:41:::1;::::0;5281:1;5242:38:::1;:41::i;:::-;5223:60;;5303:9;5298:952;-1:-1:-1::0;;;;;5322:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;:45:::1;::::0;:43:::1;:45::i;:::-;5318:1;:49;5298:952;;;-1:-1:-1::0;;;;;5412:36:111;::::1;5392:17;5412:36:::0;;;:28:::1;:36;::::0;;;;:42:::1;::::0;5452:1;5412:39:::1;:42::i;:::-;5392:62;;5531:21;5555:138;5585:6;5613:1;5636:9;5667:8;5555;:138::i;:::-;5531:162;;5907:1;5879:25;5897:6;5879:17;:25::i;:::-;:29;5875:365;;;5960:1;5932:25;5950:6;5932:17;:25::i;:::-;:29;5928:298;;;5985:222;6020:6;6052:25;6070:6;6052:17;:25::i;:::-;6103:9;6138:8;6172:13;5985:9;:222::i;:::-;-1:-1:-1::0;;5369:3:111::1;;5298:952;;;-1:-1:-1::0;;5204:3:111::1;;5134:1122;;;;4752:1510;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;4699:1563:111:o;9342:250::-;-1:-1:-1;;;;;9513:44:111;;;9487:7;9513:44;;;:36;:44;;;;;;;;:51;;;;;;;;;:62;;;;;;;;;;;:72;;;;;;;;;;;;9342:250::o;11173:230::-;11295:7;11333:63;11351:6;11359:25;11377:6;11359:17;:25::i;:::-;11386:9;11333:17;:63::i;9689:326::-;9828:7;9866:142;9892:6;9916:25;9934:6;9916:17;:25::i;:::-;9959:9;9986:8;9866;:142::i;19744:1588::-;2500:21:57;:19;:21::i;:::-;19955:9:111::1;19950:1376;19970:20:::0;;::::1;19950:1376;;;20238:20;20261:276;20287:180;20317:10;20349:31;20367:9;;20377:1;20367:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20349:31::-;20402:10;;20413:1;20402:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20437:9;;20447:1;20437:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20287:180::-;20485:38;20494:7;;20502:1;20494:10;;;;;;;:::i;:::-;;;;;;;20506:13;;20520:1;20506:16;;;;;;;:::i;:::-;;;;;;;20485:8;:38::i;:::-;20261:8;:276::i;:::-;20238:299;;20551:238;20601:4;20702:9;;20712:1;20702:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20732:10;;20743:1;20732:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20763:12;20551:24;:238::i;:::-;20948:189;20977:10;21005:29;21023:10;21005:17;:29::i;:::-;21052:10;;21063:1;21052:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21083:9;;21093:1;21083:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21113:7;;21121:1;21113:10;;;;;;;:::i;:::-;;;;;;;20948:11;:189::i;:::-;21152:163;21183:10;21211:29;21229:10;21211:17;:29::i;:::-;21258:10;;21269:1;21258:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21289:9;;21299:1;21289:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21152:13;:163::i;:::-;-1:-1:-1::0;19992:3:111::1;;19950:1376;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;19744:1588:111;;;;;;;;:::o;17307:108::-;17351:57;17366:10;17378:29;17396:10;17378:17;:29::i;:::-;17351:14;:57::i;12036:1885::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;12241:35:111;::::2;;::::0;;;:27:::2;:35;::::0;;;;:51:::2;::::0;12281:10:::2;12241:39;:51::i;:::-;-1:-1:-1::0;12666:21:111::2;12690:5:::0;;:30:::2;::::0;-1:-1:-1;;;12690:30:111;;12714:4:::2;12690:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;12690:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;12690:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13009:57;::::0;-1:-1:-1;;;13009:57:111;;13032:10:::2;13009:57;::::0;::::2;14756:51:140::0;13052:4:111::2;14823:18:140::0;;;14816:60;14892:18;;;14885:34;;;12666:54:111;;-1:-1:-1;;;;;;13009:22:111;::::2;::::0;::::2;::::0;14729:18:140;;13009:57:111::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13199:22:111::2;13215:6:::0;13199:13;:22:::2;:::i;:::-;13165:5;::::0;:30:::2;::::0;-1:-1:-1;;;13165:30:111;;13189:4:::2;13165:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;13165:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;13165:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;13161:114;;13242:33;;-1:-1:-1::0;;;13242:33:111::2;;;;;;;;;;;13161:114;13352:311;13375:6;13535:42;13570:6;13535:34;:42::i;:::-;13599:9;13623:10;13647:6;13352:9;:311::i;:::-;13850:9;-1:-1:-1::0;;;;;13738:176:111::2;13786:42;13821:6;13786:34;:42::i;:::-;13738:176;::::0;;13874:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;13738:176:111;::::2;::::0;::::2;::::0;13679:18:140;13738:176:111::2;;;;;;;12178:1743;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;1051:125:111;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;1115:30:111::1;:28;:30::i;:::-;1155:5;:14:::0;;-1:-1:-1;;;;;;1155:14:111::1;-1:-1:-1::0;;;;;1155:14:111;::::1;;::::0;;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;4092:1081;;;;;1051:125:111;:::o;1245:359::-;2500:21:57;:19;:21::i;:::-;1394:10:111::1;1377:14;1414:29:::0;;;:21:::1;:29;::::0;;;;:45;;;1470:128:::1;1490:21:::0;;::::1;1470:128;;;1532:55;1573:10;;1584:1;1573:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1532:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;;:40:::1;:55::i;:::-;-1:-1:-1::0;1513:3:111::1;;1470:128;;;;1367:237;2542:20:57::0;1857:1;3068:7;:21;2888:208;5662:138:19;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;8002:226:111:-:0;-1:-1:-1;;;;;8093:29:111;;8070:7;8093:29;;;:21;:29;;;;;;:34;;8089:68;;8136:21;;-1:-1:-1;;;8136:21:111;;;;;;;;;;;8089:68;-1:-1:-1;;;;;8192:29:111;;;;;;:21;:29;;;;;;8174:47;;:15;:47;:::i;9090:115:67:-;9153:7;9179:19;9187:3;4556:18;;4474:107;9547:156;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2575:307:57;1899:1;2702:7;;:18;2698:86;;2743:30;;-1:-1:-1;;;2743:30:57;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;24467:315:111:-;24625:4;24603:10;:27;24595:59;;;;-1:-1:-1;;;24595:59:111;;15636:2:140;24595:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24595:59:111;15434:343:140;24595:59:111;24680:5;;-1:-1:-1;;;;;24672:27:111;;;24680:5;;24672:27;24664:59;;;;-1:-1:-1;;;24664:59:111;;15984:2:140;24664:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;24664:59:111;15782:343:140;24664:59:111;24733:5;;:42;;-1:-1:-1;;;24733:42:111;;-1:-1:-1;;;;;14774:32:140;;;24733:42:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;24733:5:111;;;;:18;;14729::140;;24733:42:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4603:312:21:-;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;965:103:113;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;11791:32:140;;6518:60:21;;;11773:51:140;11746:18;;6518:60:21;11611:219:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1434:25:140;;;1407:18;;6317:34:21;1288:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;6945:261:111;-1:-1:-1;;;;;7115:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;;;:84;;7193:6;;7115:46;:84;;7193:6;;7115:84;:::i;:::-;;;;-1:-1:-1;;;;;;;6945:261:111:o;606:103:113:-;6931:20:20;:18;:20::i;:::-;672:30:113::1;:28;:30::i;6268:331:111:-:0;-1:-1:-1;;;;;6436:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6512:6;;6436:44;:82;;6512:6;;6436:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6528:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6586:6;;6528:36;:64;;6586:6;;6528:64;:::i;3371:111:64:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;21690:1458:111;21868:4;-1:-1:-1;;;;;21852:21:111;;;21848:1294;;21953:5;;-1:-1:-1;;;;;21945:27:111;;;21953:5;;21945:27;21941:413;;22068:67;22101:4;22107:8;22117:9;22128:6;22068:32;:67::i;:::-;21848:1294;;21941:413;22268:71;22305:4;22311:8;22321:9;22332:6;22268:36;:71::i;21848:1294::-;22752:5;;-1:-1:-1;;;;;22744:27:111;;;22752:5;;22744:27;22740:392;;22863:67;22896:4;22902:8;22912:9;22923:6;22863:32;:67::i;22740:392::-;23046:71;23083:4;23089:8;23099:9;23110:6;23046:36;:71::i;17722:796::-;17967:5;17945:19;18006:108;18028:6;17967:5;18073:9;18096:8;18006;:108::i;:::-;17982:132;;18223:6;18207:13;:22;18203:309;;;18245:163;18275:6;18299:11;18328:9;18355:8;18381:13;18245:12;:163::i;:::-;18203:309;;;18439:62;18452:6;18460:11;18473:9;18484:8;18494:6;18439:12;:62::i;:::-;17882:636;;17722:796;;;;;:::o;18850:888::-;19057:21;19081:102;19103:6;19123:5;19142:9;19165:8;19081;:102::i;:::-;19057:126;-1:-1:-1;19193:19:111;19215:9;:5;19223:1;19215:9;:::i;:::-;19193:31;;19234:23;19260:110;19284:6;19304:11;19329:9;19352:8;19260:10;:110::i;:::-;19234:136;;19403:13;19385:15;:31;19381:351;;;-1:-1:-1;;;;;7652:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;:83;;;19559:162;7482:260;16491:810;16720:9;16715:423;-1:-1:-1;;;;;16739:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;16735:1;:48;16715:423;;;-1:-1:-1;;;;;16823:35:111;;16804:16;16823:35;;;:27;:35;;;;;:41;;16862:1;16823:38;:41::i;:::-;16804:60;;16884:9;16879:249;-1:-1:-1;;;;;16903:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;16899:1;:49;16879:249;;;-1:-1:-1;;;;;16993:36:111;;16973:17;16993:36;;;:28;:36;;;;;:42;;17033:1;16993:39;:42::i;:::-;16973:62;;17054:59;17072:6;17080:11;17093:9;17104:8;17054:17;:59::i;:::-;-1:-1:-1;16950:3:111;;16879:249;;;-1:-1:-1;;16785:3:111;;16715:423;;;-1:-1:-1;17227:15:111;:11;17241:1;17227:15;:::i;:::-;-1:-1:-1;;;;;17187:37:111;;;;;;:29;:37;;;;;;;:55;;;;17258:36;;;;;;17282:11;1434:25:140;;1422:2;1407:18;;1288:177;17258:36:111;;;;;;;;16491:810;;:::o;8289:150:67:-;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:67;;8382:4;:50::i;715:125:113:-;6931:20:20;:18;:20::i;:::-;791:42:113::1;2362:4:19;822:10:113;791;:42::i;4923:118:67:-:0;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;13724:32:140;;4514:47:19;;;13706:51:140;13773:18;;;13766:34;;;13679:18;;4514:47:19;13532:274:140;2264:344:40;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;23282:313:111;-1:-1:-1;;;;;23418:21:111;;23434:4;23418:21;23410:67;;;;-1:-1:-1;;;23410:67:111;;16800:2:140;23410:67:111;;;16782:21:140;16839:2;16819:18;;;16812:30;16878:34;16858:18;;;16851:62;-1:-1:-1;;;16929:18:140;;;16922:31;16970:19;;23410:67:111;16598:397:140;23410:67:111;23503:5;;-1:-1:-1;;;;;23495:27:111;;;23503:5;;23495:27;23487:59;;;;-1:-1:-1;;;23487:59:111;;15984:2:140;23487:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;23487:59:111;15782:343:140;23487:59:111;23556:5;;:32;;-1:-1:-1;;;23556:32:111;;-1:-1:-1;;;;;13724:32:140;;;23556::111;;;13706:51:140;13773:18;;;13766:34;;;23556:5:111;;;;:14;;13679:18:140;;23556:32:111;13532:274:140;23664:394:111;-1:-1:-1;;;;;23804:21:111;;23820:4;23804:21;23796:67;;;;-1:-1:-1;;;23796:67:111;;17202:2:140;23796:67:111;;;17184:21:140;17241:2;17221:18;;;17214:30;17280:34;17260:18;;;17253:62;-1:-1:-1;;;17331:18:140;;;17324:31;17372:19;;23796:67:111;17000:397:140;23796:67:111;23889:5;;-1:-1:-1;;;;;23881:27:111;;;23889:5;;23881:27;23873:64;;;;-1:-1:-1;;;23873:64:111;;17604:2:140;23873:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;23873:64:111;17402:348:140;23873:64:111;23947:5;;:32;;-1:-1:-1;;;23947:32:111;;-1:-1:-1;;;;;13724:32:140;;;23947::111;;;13706:51:140;13773:18;;;13766:34;;;23947:5:111;;;;:13;;13679:18:140;;23947:32:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23989:62:111;;-1:-1:-1;;;23989:62:111;;-1:-1:-1;;;;;13724:32:140;;;23989:62:111;;;13706:51:140;13773:18;;;13766:34;;;23989:44:111;;;;;13679:18:140;;23989:62:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24859:354;25021:4;24999:10;:27;24991:59;;;;-1:-1:-1;;;24991:59:111;;15636:2:140;24991:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24991:59:111;15434:343:140;24991:59:111;25076:5;;-1:-1:-1;;;;;25068:27:111;;;25076:5;;25068:27;25060:64;;;;-1:-1:-1;;;25060:64:111;;17604:2:140;25060:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;25060:64:111;17402:348:140;25060:64:111;25134:72;;-1:-1:-1;;;25134:72:111;;-1:-1:-1;;;;;14774:32:140;;;25134:72:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;25134:48:111;;;;;14729:18:140;;25134:72:111;14554:371:140;6605:334:111;-1:-1:-1;;;;;6776:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6852:6;;6776:44;:82;;6852:6;;6776:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6868:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6926:6;;6868:36;:64;;6926:6;;6868:64;:::i;15011:1474::-;15265:19;15287:108;15309:6;15329:11;15354:9;15377:8;15287;:108::i;:::-;15265:130;-1:-1:-1;15405:21:111;15429:114;15453:6;15473:15;:11;15487:1;15473:15;:::i;:::-;15502:9;15525:8;15429:10;:114::i;:::-;15405:138;;15573:11;15557:13;:27;15553:85;;;-1:-1:-1;15616:11:111;15553:85;15647:17;15667:27;15681:13;15667:11;:27;:::i;:::-;15647:47;-1:-1:-1;15705:66:111;15715:6;15723:15;:11;15737:1;15723:15;:::i;:::-;15740:9;15751:8;15761:9;15705;:66::i;:::-;16181:17;;16177:131;;16214:83;16255:4;16262:8;16272:9;16283:13;16214:32;:83::i;:::-;16407:9;-1:-1:-1;;;;;16323:155:111;16382:11;16360:8;-1:-1:-1;;;;;16323:155:111;;16430:11;16455:13;16323:155;;;;;;18062:25:140;;;18118:2;18103:18;;18096:34;18050:2;18035:18;;17888:248;16323:155:111;;;;;;;;15159:1326;;;15011:1474;;;;:::o;2241:406:67:-;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:67;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:67;2618:12;;1671:281:40;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;11791:32:140;;1805:47:40;;;11773:51:140;11746:18;;1805:47:40;11611:219:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;11791:32:140;;4933:24:53;;;11773:51:140;11746:18;;4933:24:53;11611:219:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:140;;562:42;;552:70;;618:1;615;608:12;633:650;719:6;727;735;743;796:3;784:9;775:7;771:23;767:33;764:53;;;813:1;810;803:12;764:53;852:9;839:23;871:31;896:5;871:31;:::i;:::-;921:5;-1:-1:-1;999:2:140;984:18;;971:32;;-1:-1:-1;1081:2:140;1066:18;;1053:32;1094:33;1053:32;1094:33;:::i;:::-;1146:7;-1:-1:-1;1205:2:140;1190:18;;1177:32;1218:33;1177:32;1218:33;:::i;:::-;633:650;;;;-1:-1:-1;633:650:140;;-1:-1:-1;;633:650:140:o;1470:508::-;1547:6;1555;1563;1616:2;1604:9;1595:7;1591:23;1587:32;1584:52;;;1632:1;1629;1622:12;1584:52;1671:9;1658:23;1690:31;1715:5;1690:31;:::i;:::-;1740:5;-1:-1:-1;1818:2:140;1803:18;;1790:32;;-1:-1:-1;1900:2:140;1885:18;;1872:32;1913:33;1872:32;1913:33;:::i;:::-;1965:7;1955:17;;;1470:508;;;;;:::o;1983:247::-;2042:6;2095:2;2083:9;2074:7;2070:23;2066:32;2063:52;;;2111:1;2108;2101:12;2063:52;2150:9;2137:23;2169:31;2194:5;2169:31;:::i;2235:637::-;2425:2;2437:21;;;2507:13;;2410:18;;;2529:22;;;2377:4;;2608:15;;;2582:2;2567:18;;;2377:4;2651:195;2665:6;2662:1;2659:13;2651:195;;;2730:13;;-1:-1:-1;;;;;2726:39:140;2714:52;;2795:2;2821:15;;;;2786:12;;;;2762:1;2680:9;2651:195;;2877:367;2945:6;2953;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;3061:9;3048:23;3080:31;3105:5;3080:31;:::i;:::-;3130:5;3208:2;3193:18;;;;3180:32;;-1:-1:-1;;;2877:367:140:o;3249:226::-;3308:6;3361:2;3349:9;3340:7;3336:23;3332:32;3329:52;;;3377:1;3374;3367:12;3329:52;-1:-1:-1;3422:23:140;;3249:226;-1:-1:-1;3249:226:140:o;3662:367::-;3730:6;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3852:23;;;-1:-1:-1;3951:2:140;3936:18;;3923:32;3964:33;3923:32;3964:33;:::i;:::-;4016:7;4006:17;;;3662:367;;;;;:::o;4034:529::-;4111:6;4119;4127;4180:2;4168:9;4159:7;4155:23;4151:32;4148:52;;;4196:1;4193;4186:12;4148:52;4235:9;4222:23;4254:31;4279:5;4254:31;:::i;:::-;4304:5;-1:-1:-1;4361:2:140;4346:18;;4333:32;4374:33;4333:32;4374:33;:::i;:::-;4426:7;-1:-1:-1;4485:2:140;4470:18;;4457:32;4498:33;4457:32;4498:33;:::i;4568:388::-;4636:6;4644;4697:2;4685:9;4676:7;4672:23;4668:32;4665:52;;;4713:1;4710;4703:12;4665:52;4752:9;4739:23;4771:31;4796:5;4771:31;:::i;:::-;4821:5;-1:-1:-1;4878:2:140;4863:18;;4850:32;4891:33;4850:32;4891:33;:::i;4961:367::-;5024:8;5034:6;5088:3;5081:4;5073:6;5069:17;5065:27;5055:55;;5106:1;5103;5096:12;5055:55;-1:-1:-1;5129:20:140;;-1:-1:-1;;;;;5161:30:140;;5158:50;;;5204:1;5201;5194:12;5158:50;5241:4;5233:6;5229:17;5217:29;;5301:3;5294:4;5284:6;5281:1;5277:14;5269:6;5265:27;5261:38;5258:47;5255:67;;;5318:1;5315;5308:12;5255:67;4961:367;;;;;:::o;5333:1099::-;5491:6;5499;5507;5515;5523;5531;5584:2;5572:9;5563:7;5559:23;5555:32;5552:52;;;5600:1;5597;5590:12;5552:52;5640:9;5627:23;-1:-1:-1;;;;;5665:6:140;5662:30;5659:50;;;5705:1;5702;5695:12;5659:50;5744:70;5806:7;5797:6;5786:9;5782:22;5744:70;:::i;:::-;5833:8;;-1:-1:-1;5718:96:140;-1:-1:-1;;5921:2:140;5906:18;;5893:32;-1:-1:-1;;;;;5937:32:140;;5934:52;;;5982:1;5979;5972:12;5934:52;6021:72;6085:7;6074:8;6063:9;6059:24;6021:72;:::i;:::-;6112:8;;-1:-1:-1;5995:98:140;-1:-1:-1;;6200:2:140;6185:18;;6172:32;-1:-1:-1;;;;;6216:32:140;;6213:52;;;6261:1;6258;6251:12;6213:52;6300:72;6364:7;6353:8;6342:9;6338:24;6300:72;:::i;:::-;5333:1099;;;;-1:-1:-1;5333:1099:140;;-1:-1:-1;5333:1099:140;;6391:8;;5333:1099;-1:-1:-1;;;5333:1099:140:o;6437:127::-;6498:10;6493:3;6489:20;6486:1;6479:31;6529:4;6526:1;6519:15;6553:4;6550:1;6543:15;6569:1079;6646:6;6654;6707:2;6695:9;6686:7;6682:23;6678:32;6675:52;;;6723:1;6720;6713:12;6675:52;6762:9;6749:23;6781:31;6806:5;6781:31;:::i;:::-;6831:5;-1:-1:-1;6887:2:140;6872:18;;6859:32;-1:-1:-1;;;;;6903:30:140;;6900:50;;;6946:1;6943;6936:12;6900:50;6969:22;;7022:4;7014:13;;7010:27;-1:-1:-1;7000:55:140;;7051:1;7048;7041:12;7000:55;7091:2;7078:16;-1:-1:-1;;;;;7109:6:140;7106:30;7103:56;;;7139:18;;:::i;:::-;7188:2;7182:9;7280:2;7242:17;;-1:-1:-1;;7238:31:140;;;7271:2;7234:40;7230:54;7218:67;;-1:-1:-1;;;;;7300:34:140;;7336:22;;;7297:62;7294:88;;;7362:18;;:::i;:::-;7398:2;7391:22;7422;;;7463:15;;;7480:2;7459:24;7456:37;-1:-1:-1;7453:57:140;;;7506:1;7503;7496:12;7453:57;7562:6;7557:2;7553;7549:11;7544:2;7536:6;7532:15;7519:50;7615:1;7610:2;7601:6;7593;7589:19;7585:28;7578:39;7636:6;7626:16;;;;;6569:1079;;;;;:::o;7653:508::-;7730:6;7738;7746;7799:2;7787:9;7778:7;7774:23;7770:32;7767:52;;;7815:1;7812;7805:12;7767:52;7854:9;7841:23;7873:31;7898:5;7873:31;:::i;:::-;7923:5;-1:-1:-1;7980:2:140;7965:18;;7952:32;7993:33;7952:32;7993:33;:::i;:::-;7653:508;;8045:7;;-1:-1:-1;;;8125:2:140;8110:18;;;;8097:32;;7653:508::o;8166:1431::-;8360:6;8368;8376;8384;8392;8400;8408;8416;8469:3;8457:9;8448:7;8444:23;8440:33;8437:53;;;8486:1;8483;8476:12;8437:53;8526:9;8513:23;-1:-1:-1;;;;;8551:6:140;8548:30;8545:50;;;8591:1;8588;8581:12;8545:50;8630:70;8692:7;8683:6;8672:9;8668:22;8630:70;:::i;:::-;8719:8;;-1:-1:-1;8604:96:140;-1:-1:-1;;8807:2:140;8792:18;;8779:32;-1:-1:-1;;;;;8823:32:140;;8820:52;;;8868:1;8865;8858:12;8820:52;8907:72;8971:7;8960:8;8949:9;8945:24;8907:72;:::i;:::-;8998:8;;-1:-1:-1;8881:98:140;-1:-1:-1;;9086:2:140;9071:18;;9058:32;-1:-1:-1;;;;;9102:32:140;;9099:52;;;9147:1;9144;9137:12;9099:52;9186:72;9250:7;9239:8;9228:9;9224:24;9186:72;:::i;:::-;9277:8;;-1:-1:-1;9160:98:140;-1:-1:-1;;9365:2:140;9350:18;;9337:32;-1:-1:-1;;;;;9381:32:140;;9378:52;;;9426:1;9423;9416:12;9378:52;9465:72;9529:7;9518:8;9507:9;9503:24;9465:72;:::i;:::-;8166:1431;;;;-1:-1:-1;8166:1431:140;;-1:-1:-1;8166:1431:140;;;;;;9556:8;-1:-1:-1;;;8166:1431:140:o;9602:250::-;9687:1;9697:113;9711:6;9708:1;9705:13;9697:113;;;9787:11;;;9781:18;9768:11;;;9761:39;9733:2;9726:10;9697:113;;;-1:-1:-1;;9844:1:140;9826:16;;9819:27;9602:250::o;9857:396::-;10006:2;9995:9;9988:21;9969:4;10038:6;10032:13;10081:6;10076:2;10065:9;10061:18;10054:34;10097:79;10169:6;10164:2;10153:9;10149:18;10144:2;10136:6;10132:15;10097:79;:::i;:::-;10237:2;10216:15;-1:-1:-1;;10212:29:140;10197:45;;;;10244:2;10193:54;;9857:396;-1:-1:-1;;9857:396:140:o;11055:551::-;11150:6;11158;11166;11219:2;11207:9;11198:7;11194:23;11190:32;11187:52;;;11235:1;11232;11225:12;11187:52;11280:23;;;-1:-1:-1;11378:2:140;11363:18;;11350:32;-1:-1:-1;;;;;11394:30:140;;11391:50;;;11437:1;11434;11427:12;11391:50;11476:70;11538:7;11529:6;11518:9;11514:22;11476:70;:::i;:::-;11055:551;;11565:8;;-1:-1:-1;11450:96:140;;-1:-1:-1;;;;11055:551:140:o;11835:127::-;11896:10;11891:3;11887:20;11884:1;11877:31;11927:4;11924:1;11917:15;11951:4;11948:1;11941:15;13130:127;13191:10;13186:3;13182:20;13179:1;13172:31;13222:4;13219:1;13212:15;13246:4;13243:1;13236:15;13262:125;13327:9;;;13348:10;;;13345:36;;;13361:18;;:::i;13392:135::-;13431:3;13452:17;;;13449:43;;13472:18;;:::i;:::-;-1:-1:-1;13519:1:140;13508:13;;13392:135::o;14025:127::-;14086:10;14081:3;14077:20;14074:1;14067:31;14117:4;14114:1;14107:15;14141:4;14138:1;14131:15;14365:184;14435:6;14488:2;14476:9;14467:7;14463:23;14459:32;14456:52;;;14504:1;14501;14494:12;14456:52;-1:-1:-1;14527:16:140;;14365:184;-1:-1:-1;14365:184:140:o;14930:277::-;14997:6;15050:2;15038:9;15029:7;15025:23;15021:32;15018:52;;;15066:1;15063;15056:12;15018:52;15098:9;15092:16;15151:5;15144:13;15137:21;15130:5;15127:32;15117:60;;15173:1;15170;15163:12;15212:217;15252:1;15278;15268:132;;15322:10;15317:3;15313:20;15310:1;15303:31;15357:4;15354:1;15347:15;15385:4;15382:1;15375:15;15268:132;-1:-1:-1;15414:9:140;;15212:217::o;17755:128::-;17822:9;;;17843:11;;;17840:37;;;17857:18;;:::i;18141:287::-;18270:3;18308:6;18302:13;18324:66;18383:6;18378:3;18371:4;18363:6;18359:17;18324:66;:::i;:::-;18406:16;;;;;18141:287;-1:-1:-1;;18141:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":7976,"length":32},{"start":8017,"length":32},{"start":8341,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WHITELIST_ROLE()":"7a997ab7","acceptGenesisCeremony()":"92a2ebf3","computeAllStake(address,uint256)":"55bdbe4c","computeAllStakeForAcceptingEpoch(address)":"574663a9","currentAcceptingEpochByDomain(address)":"b1de97f7","domainGenesisAccepted(address)":"d1ba90ff","epochDurationByDomain(address)":"3bccf635","getAcceptingEpoch(address)":"22fceb75","getAttesterStake(address,uint256,address)":"24fdfddf","getAttesterStakeForAcceptingEpoch(address,address)":"3debeadc","getCustodianStake(address,uint256,address)":"0ce52af5","getCustodianStakeForAcceptingEpoch(address,address)":"9db92f68","getEpochByL1BlockTime(address)":"d980b40d","getEpochDuration(address)":"5c534359","getNextAcceptingEpochWithException(address)":"771fcfc4","getNextPresentEpochWithException(address)":"57dd6a94","getRegisteredAttesters(address)":"1789aeb4","getRegisteredCustodians(address)":"341d5ef5","getRoleAdmin(bytes32)":"248a9ca3","getStake(address,uint256,address,address)":"93dfb85c","getStakeForAcceptingEpoch(address,address,address)":"a78d1fef","getStakedAttestersForAcceptingEpoch(address)":"4234a479","getUnstake(address,uint256,address,address)":"7d93768b","getUnstakeForAcceptingEpoch(address,address,address)":"34eada3a","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address)":"c4d66de8","proxiableUUID()":"52d1902d","registerDomain(uint256,address[])":"d37304f8","removeAddressFromWhitelist(address)":"286dd3f5","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardArray(address[],uint256[],address[])":"4e76a139","rewardFromDomain(address,uint256,address)":"5e00bf46","rollOverEpoch()":"a887b71c","setAcceptingEpoch(address,uint256)":"1dc8b949","slash(address[],address[],uint256[],uint256[])":"a885c975","stake(address,address,uint256)":"bf6eac2f","stakesByDomainEpochCustodian(address,uint256,address)":"86af70d1","stakesByDomainEpochCustodianAttester(address,uint256,address,address)":"0c8f522f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","unstake(address,address,uint256)":"60829f8a","unstakesByDomainEpochCustodianAttester(address,uint256,address,address)":"e6e3fb3a","upgradeToAndCall(address,bytes)":"4f1ef286","whitelistAddress(address)":"41566585"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodianTransferAmountMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EpochDurationNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisAlreadyAccepted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakeExceedsGenesisStake\",\"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\":\"attester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstake\",\"type\":\"uint256\"}],\"name\":\"AttesterEpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"EpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"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\":[],\"name\":\"WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"computeAllStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"computeAllStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"currentAcceptingEpochByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentAcceptingEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"domainGenesisAccepted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"epochDurationByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochByL1BlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextPresentEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredAttesters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredCustodians\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"registerDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"removeAddressFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"rewardArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"rewardFromDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollOverEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"}],\"name\":\"slash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodian\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"unstakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"whitelistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"computeAllStakeForAcceptingEpoch(address)\":{\"params\":{\"domain\":\"The domain to compute total stake for\"}},\"getCustodianStake(address,uint256,address)\":{\"details\":\"gets the total stake for a given epoch for a given custodian\"},\"getCustodianStakeForAcceptingEpoch(address,address)\":{\"details\":\"gets the total stake for the accepting epoch for a given custodian\"},\"getNextAcceptingEpochWithException(address)\":{\"details\":\"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getNextPresentEpochWithException(address)\":{\"details\":\"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getStake(address,uint256,address,address)\":{\"details\":\"gets the stake for a given epoch for a given {attester,custodian} tuple\"},\"getStakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the stake for the accepting epoch for a given {attester,custodian} tuple\"},\"getUnstake(address,uint256,address,address)\":{\"details\":\"gets the unstake for a given epoch for a given {attester,custodian} tuple\"},\"getUnstakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the unstake for the accepting epoch for a given {attester,custodian} tuple\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"rewardArray(address[],uint256[],address[])\":{\"params\":{\"amounts\":\"The amounts to reward\",\"attesters\":\"The attesters to reward\",\"custodians\":\"The custodians of the token from which to reward the attesters \"}},\"rewardFromDomain(address,uint256,address)\":{\"params\":{\"amount\":\"The amount to reward\",\"attester\":\"The attester to reward\",\"custodian\":\"The custodian of the token from which to reward the attester, here it is the domain\"}},\"setAcceptingEpoch(address,uint256)\":{\"params\":{\"domain\":\"The domain address\",\"newEpoch\":\"The new accepting epoch value\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"EpochDurationNotSet()\":[{\"notice\":\"Error thrown when trying to get epoch but duration not set\"}]},\"kind\":\"user\",\"methods\":{\"computeAllStake(address,uint256)\":{\"notice\":\"Computes total stake across all custodians and attesters for an epoch\"},\"computeAllStakeForAcceptingEpoch(address)\":{\"notice\":\"Computes total stake across all custodians and attesters for the current accepting epoch\"},\"getEpochDuration(address)\":{\"notice\":\"Gets the epoch duration for the given domain\"},\"getNextAcceptingEpochWithException(address)\":{\"notice\":\"Gets the next accepting epoch number\"},\"getNextPresentEpochWithException(address)\":{\"notice\":\"Gets the next present epoch number\"},\"getRegisteredAttesters(address)\":{\"notice\":\"Gets all attesters who are registered for the given domain\"},\"getRegisteredCustodians(address)\":{\"notice\":\"Gets all custodians who are registered for the given domain\"},\"getStakedAttestersForAcceptingEpoch(address)\":{\"notice\":\"Gets all attesters who have stake in the current accepting epoch\"},\"registerDomain(uint256,address[])\":{\"notice\":\"Registers a domain and sets the epoch duration\"},\"rewardArray(address[],uint256[],address[])\":{\"notice\":\"An array of custodians reward an array of attesters\"},\"rewardFromDomain(address,uint256,address)\":{\"notice\":\"Domain rewards an attester\"},\"setAcceptingEpoch(address,uint256)\":{\"notice\":\"Sets the accepting epoch for a given domain\"},\"stake(address,address,uint256)\":{\"notice\":\"Stakes for the next epoch\"},\"whitelistAddress(address)\":{\"notice\":\"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MovementStaking.sol\":\"MovementStaking\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CustodianTransferAmountMismatch"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EpochDurationNotSet"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisAlreadyAccepted"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"StakeExceedsGenesisStake"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstake","type":"uint256","indexed":false}],"type":"event","name":"AttesterEpochRolledOver","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterStaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterUnstaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false}],"type":"event","name":"EpochRolledOver","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"computeAllStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"computeAllStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"currentAcceptingEpochByDomain","outputs":[{"internalType":"uint256","name":"currentAcceptingEpoch","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"domainGenesisAccepted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"epochDurationByDomain","outputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochByL1BlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextPresentEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredAttesters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredCustodians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"registerDomain"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAddressFromWhitelist"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"rewardArray"},{"inputs":[{"internalType":"address","name":"attester","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"rewardFromDomain"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"rollOverEpoch"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"address[]","name":"custodians","type":"address[]"},{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"refundAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"slash"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"contract IERC20","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"stake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodian","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unstake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"unstakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelistAddress"}],"devdoc":{"kind":"dev","methods":{"computeAllStakeForAcceptingEpoch(address)":{"params":{"domain":"The domain to compute total stake for"}},"getCustodianStake(address,uint256,address)":{"details":"gets the total stake for a given epoch for a given custodian"},"getCustodianStakeForAcceptingEpoch(address,address)":{"details":"gets the total stake for the accepting epoch for a given custodian"},"getNextAcceptingEpochWithException(address)":{"details":"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getNextPresentEpochWithException(address)":{"details":"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getStake(address,uint256,address,address)":{"details":"gets the stake for a given epoch for a given {attester,custodian} tuple"},"getStakeForAcceptingEpoch(address,address,address)":{"details":"gets the stake for the accepting epoch for a given {attester,custodian} tuple"},"getUnstake(address,uint256,address,address)":{"details":"gets the unstake for a given epoch for a given {attester,custodian} tuple"},"getUnstakeForAcceptingEpoch(address,address,address)":{"details":"gets the unstake for the accepting epoch for a given {attester,custodian} tuple"},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"rewardArray(address[],uint256[],address[])":{"params":{"amounts":"The amounts to reward","attesters":"The attesters to reward","custodians":"The custodians of the token from which to reward the attesters "}},"rewardFromDomain(address,uint256,address)":{"params":{"amount":"The amount to reward","attester":"The attester to reward","custodian":"The custodian of the token from which to reward the attester, here it is the domain"}},"setAcceptingEpoch(address,uint256)":{"params":{"domain":"The domain address","newEpoch":"The new accepting epoch value"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"computeAllStake(address,uint256)":{"notice":"Computes total stake across all custodians and attesters for an epoch"},"computeAllStakeForAcceptingEpoch(address)":{"notice":"Computes total stake across all custodians and attesters for the current accepting epoch"},"getEpochDuration(address)":{"notice":"Gets the epoch duration for the given domain"},"getNextAcceptingEpochWithException(address)":{"notice":"Gets the next accepting epoch number"},"getNextPresentEpochWithException(address)":{"notice":"Gets the next present epoch number"},"getRegisteredAttesters(address)":{"notice":"Gets all attesters who are registered for the given domain"},"getRegisteredCustodians(address)":{"notice":"Gets all custodians who are registered for the given domain"},"getStakedAttestersForAcceptingEpoch(address)":{"notice":"Gets all attesters who have stake in the current accepting epoch"},"registerDomain(uint256,address[])":{"notice":"Registers a domain and sets the epoch duration"},"rewardArray(address[],uint256[],address[])":{"notice":"An array of custodians reward an array of attesters"},"rewardFromDomain(address,uint256,address)":{"notice":"Domain rewards an attester"},"setAcceptingEpoch(address,uint256)":{"notice":"Sets the accepting epoch for a given domain"},"stake(address,address,uint256)":{"notice":"Stakes for the next epoch"},"whitelistAddress(address)":{"notice":"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/staking/MovementStaking.sol":"MovementStaking"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":111} +>>>>>>> main diff --git a/protocol/pcp/cli/client/abis/PCP.json b/protocol/pcp/cli/client/abis/PCP.json index 1e9a3cb0..1b13bf56 100644 --- a/protocol/pcp/cli/client/abis/PCP.json +++ b/protocol/pcp/cli/client/abis/PCP.json @@ -1 +1,5 @@ -{"abi":[{"type":"function","name":"COMMITMENT_ADMIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TRUSTED_ATTESTER","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":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"attesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchGrantCommitmentAdmin","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchGrantTrustedAttester","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitmentFirstSeenAt","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitmentStake","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitement","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitments","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"createSuperBlockCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"pure"},{"type":"function","name":"forceLatestCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCommitmentByAttester","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getCommitmentFirstSeenAt","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxTolerableSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmedCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPresentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSuperBlockHeightAssignedEpoch","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"grantCommitmentAdmin","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantTrustedAttester","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_stakingContract","type":"address","internalType":"contract IMovementStaking"},{"name":"_lastPostconfirmedSuperBlockHeight","type":"uint256","internalType":"uint256"},{"name":"_leadingSuperBlockTolerance","type":"uint256","internalType":"uint256"},{"name":"_epochDuration","type":"uint256","internalType":"uint256"},{"name":"_custodians","type":"address[]","internalType":"address[]"},{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"},{"name":"_moveTokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isCommitted","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPostconfirmed","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithinPostconfirmerPrivilegeDuration","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"leadingSuperBlockTolerance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"moveTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"openAttestationEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmSuperBlocksAndRollover","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"postconfirmedAtL1BlockHeight","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockTimestamp","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockTimestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedBy","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"attester","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocks","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocksVersion","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardPerAttestationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rewardPerPostconfirmationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinCommitmentAgeForPostconfirmation","inputs":[{"name":"_minCommitmentAgeForPostconfirmation","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOpenAttestationEnabled","inputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmedCommitmentAtBlockHeight","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerDuration","inputs":[{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerPrivilegeDuration","inputs":[{"name":"_postconfirmerPrivilegeDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerAttestationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerPostconfirmationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakingContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMovementStaking"}],"stateMutability":"view"},{"type":"function","name":"submitBatchSuperBlockCommitment","inputs":[{"name":"superBlockCommitments","type":"tuple[]","internalType":"struct PCPStorage.SuperBlockCommitment[]","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitSuperBlockCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"superBlockHeightAssignedEpoch","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"versionedPostconfirmedSuperBlocks","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SuperBlockCommitmentSubmitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"attesterStake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SuperBlockPostconfirmed","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"height","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AttesterAlreadyCommitted","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLong","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLongForEpoch","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnacceptableSuperBlockCommitment","inputs":[]},{"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong","inputs":[]},{"type":"error","name":"postconfirmerPrivilegeDurationTooLong","inputs":[]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b50608051613c4561003d600039600081816126e60152818161270f01526128530152613c456000f3fe6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;1171:4:21;1128:48;;545:34560:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;11507:242:107;;;;;;;;;;-1:-1:-1;11507:242:107;;;;;:::i;:::-;;:::i;:::-;;;;1210:13:140;;1192:32;;1280:4;1268:17;;;1262:24;1240:20;;;1233:54;1331:17;;;1325:24;1303:20;;;1296:54;1180:2;1165:18;11507:242:107;968:388:140;6474:129:107;;;;;;;;;;-1:-1:-1;6566:30:107;;6474:129;;;1507:25:140;;;1495:2;1480:18;6474:129:107;1361:177:140;1406:41:108;;;;;;;;;;;;;;;;3846:77;;;;;;;;;;-1:-1:-1;3846:77:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;18935:308:107;;;;;;;;;;-1:-1:-1;18935:308:107;;;;;:::i;:::-;;:::i;:::-;;24959:683;;;;;;;;;;-1:-1:-1;24959:683:107;;;;;:::i;:::-;;:::i;33689:155::-;;;;;;;;;;-1:-1:-1;33689:155:107;;;;;:::i;:::-;;:::i;13996:337::-;;;;;;;;;;-1:-1:-1;13996:337:107;;;;;:::i;:::-;;:::i;2789:1624::-;;;;;;;;;;-1:-1:-1;2789:1624:107;;;;;:::i;:::-;;:::i;5413:111::-;;;;;;;;;;-1:-1:-1;5496:21:107;;5413:111;;33525:158;;;;;;;;;;;;;:::i;5318:107:108:-;;;;;;;;;;-1:-1:-1;5318:107:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;32361:287:107;;;;;;;;;;-1:-1:-1;32361:287:107;;;;;:::i;:::-;;:::i;7053:533::-;;;;;;;;;;-1:-1:-1;7053:533:107;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;17045:115:107:-;;;;;;;;;;;;;:::i;19249:200::-;;;;;;;;;;-1:-1:-1;19249:200:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;19402:31:107;;19368:66;;:33;:66;;;;;:74;;;;;;;;;;19361:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19249:200;5246:136:19;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;18335:405:107:-;;;;;;;;;;-1:-1:-1;18335:405:107;;;;;:::i;:::-;;:::i;9951:929::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6818:32:140;;;6800:51;;6788:2;6773:18;9951:929:107;6654:203:140;6348:245:19;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;8946:165:107:-;;;;;;;;;;;;;:::i;8574:133::-;;;;;;;;;;;;;:::i;4950:118:108:-;;;;;;;;;;-1:-1:-1;4950:118:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7415:25:140;;;7471:2;7456:18;;7449:34;;;;7499:18;;;7492:34;7403:2;7388:18;4950:118:108;7213:319:140;4837:570:107;;;;;;;;;;-1:-1:-1;4837:570:107;;;;;:::i;:::-;;:::i;32654:607::-;;;;;;;;;;-1:-1:-1;32654:607:107;;;;;:::i;:::-;;:::i;32108:176::-;;;;;;;;;;-1:-1:-1;32108:176:107;;;;;:::i;:::-;;:::i;1866:326::-;;;;;;;;;;-1:-1:-1;1866:326:107;;;;;:::i;:::-;;:::i;1978:36:108:-;;;;;;;;;;;;;;;;4161:214:21;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;14774:209:107:-;;;;;;;;;;-1:-1:-1;14774:209:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;14947:19:107;;;;:11;:19;;;;;;;;-1:-1:-1;;;;;14947:29:107;;;;;;;;;;;;;14940:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14774:209;2261:45:108;;;;;;;;;;;;;;;;33850:165:107;;;;;;;;;;-1:-1:-1;33850:165:107;;;;;:::i;:::-;;:::i;405:31:108:-;;;;;;;;;;-1:-1:-1;405:31:108;;;;-1:-1:-1;;;;;405:31:108;;;16904:135:107;;;;;;;;;;-1:-1:-1;16999:33:107;;16904:135;;8131:129;;;;;;;;;;;;;:::i;764:72::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;764:72:107;;9197:414;;;;;;;;;;;;;:::i;5480:40:108:-;;;;;;;;;;;;;;;;14339:430:107;;;;;;;;;;-1:-1:-1;14339:430:107;;;;;:::i;:::-;;:::i;34093:157::-;;;;;;;;;;-1:-1:-1;34093:157:107;;;;;:::i;:::-;34180:7;34206:27;;;:20;:27;;;;;;;;-1:-1:-1;;;;;34206:37:107;;;;;;;;;;;;;34093:157;8745:131;;;;;;;;;;;;;:::i;5168:97:108:-;;;;;;;;;;-1:-1:-1;5168:97:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;30800:311:107;;;;;;;;;;-1:-1:-1;30800:311:107;;;;;:::i;:::-;;:::i;4005:94:108:-;;;;;;;;;;-1:-1:-1;4005:94:108;;;;;:::i;:::-;;;;;;;;;;;;;;4539:109;;;;;;;;;;-1:-1:-1;4539:109:108;;;;;:::i;:::-;;;;;;;;;;;;;;654:72:107;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;654:72:107;;528:89:110;;;;;;;;;;;;;:::i;2198:136:107:-;;;;;;;;;;-1:-1:-1;2198:136:107;;;;;:::i;:::-;;:::i;2880:87:108:-;;;;;;;;;;-1:-1:-1;2880:87:108;;;;;:::i;:::-;;;;;;;;;;;;;;8331:207:107;;;;;;;;;;;;;:::i;3625:76:108:-;;;;;;;;;;-1:-1:-1;3625:76:108;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3625:76:108;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4465:195:107:-;;;;;;;;;;;;;:::i;15037:159::-;;;;;;;;;;;;;:::i;1623:237::-;;;;;;;;;;-1:-1:-1;1623:237:107;;;;;:::i;:::-;;:::i;4336:100:108:-;;;;;;;;;;-1:-1:-1;4336:100:108;;;;;:::i;:::-;;;;;;;;;;;;;;2317:49:19;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;34600:177:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7592:139::-;;;;;;;;;;-1:-1:-1;7689:35:107;;7592:139;;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;31543:484:107:-;;;;;;;;;;-1:-1:-1;31543:484:107;;;;;:::i;:::-;;:::i;31211:198::-;;;;;;;;;;-1:-1:-1;31211:198:107;;;;;:::i;:::-;;:::i;2106:50:108:-;;;;;;;;;;;;;;;;3248:105;;;;;;;;;;-1:-1:-1;3248:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2340:226:107;;;;;;;;;;-1:-1:-1;2340:226:107;;;;;:::i;:::-;;:::i;11026:250::-;;;;;;;;;;-1:-1:-1;11026:250:107;;;;;:::i;:::-;;:::i;7737:132::-;;;;;;;;;;-1:-1:-1;7737:132:107;;;;;:::i;:::-;;:::i;15520:149::-;;;;;;;;;;-1:-1:-1;15520:149:107;;;;;:::i;:::-;15599:7;15625:37;;;:29;:37;;;;;;;15520:149;5580:45:108;;;;;;;;;;;;;;;;33339:180:107;;;;;;;;;;-1:-1:-1;33339:180:107;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;3436:114:108:-;;;;;;;;;;-1:-1:-1;3436:114:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5787:464:107;;;;;;;;;;-1:-1:-1;5787:464:107;;;;;:::i;:::-;;:::i;15875:221::-;;;;;;;;;;-1:-1:-1;15875:221:107;;;;;:::i;:::-;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;15875:221;34783:133;;;;;;;;;;-1:-1:-1;34783:133:107;;;;;:::i;:::-;34843:4;34866:19;;;:11;:19;;;;;;;;34886:10;34866:31;;;;;;;:38;:43;;;34783:133;3049:105:108;;;;;;;;;;-1:-1:-1;3049:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5074:46;;;;;;;;;;;;;;;;34922:180:107;;;;;;;;;;-1:-1:-1;34922:180:107;;;;;:::i;:::-;35043:31;;34986:4;35009:66;;;:33;:66;;;;;;;;:74;;;;;;;:81;:86;;;34922:180;34336:177;;;;;;;;;;-1:-1:-1;34336:177:107;;;;;:::i;:::-;34433:7;34459:32;;;:25;:32;;;;;;;;-1:-1:-1;;;;;34459:47:107;;;;;;;;;;;;;34336:177;4718:89:108;;;;;;;;;;-1:-1:-1;4718:89:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;261:39;;;;;;;;;;-1:-1:-1;261:39:108;;;;-1:-1:-1;;;;;261:39:108;;;4855:34;;;;;;;;;;-1:-1:-1;4855:34:108;;;;;;;;1598:48;;;;;;;;;;;;;;;;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;11507:242:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;11693:49:107;;;;;;;;;;;;;;;;;;;;;;11507:242;;;;;;:::o;18935:308::-;19054:37;-1:-1:-1;;;;;;;;;;;19080:10:107;19054:7;:37::i;:::-;19033:132;;;;-1:-1:-1;;;19033:132:107;;13469:2:140;19033:132:107;;;13451:21:140;13508:2;13488:18;;;13481:30;13547:34;13527:18;;;13520:62;-1:-1:-1;;;13598:18:140;;;13591:46;13654:19;;19033:132:107;;;;;;;;;19175:61;19215:20;19175:39;:61::i;:::-;18935:308;:::o;24959:683::-;16028:27;;25078:4;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25148:1;25098:51;25094:94;;-1:-1:-1;25172:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25094:94::-;25561:15;25510:35;6566:30;;;6474:129;25510:35;7689;;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25392:102;;;;:::i;:::-;:153;;;;:::i;:::-;:184;25388:227;;;-1:-1:-1;25599:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25388:227::-;-1:-1:-1;25631:4:107;;24959:683;-1:-1:-1;24959:683:107:o;33689:155::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33795:25:107::1;:42:::0;33689:155::o;13996:337::-;14122:22;;;;;:63;;;14148:37;-1:-1:-1;;;;;;;;;;;14174:10:107;14148:7;:37::i;:::-;14101:144;;;;-1:-1:-1;;;14101:144:107;;;;;;;:::i;:::-;14255:71;14293:10;14305:20;14255:37;:71::i;2789:1624::-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;3225:33:107::1;:31;:33::i;:::-;3268:15;:34:::0;;-1:-1:-1;;;;;;3268:34:107::1;-1:-1:-1::0;;;;;3268:34:107;::::1;::::0;;::::1;::::0;;;3312:26:::1;:56:::0;;;3378:33:::1;:70:::0;;;3458:59:::1;::::0;-1:-1:-1;;;3458:59:107;;:30:::1;::::0;:59:::1;::::0;3489:14;;3505:11;;3458:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3527:32;3548:10;3527:20;:32::i;:::-;3569;3590:10;3569:20;:32::i;:::-;3611:21;:46:::0;;;3667:16:::1;:36:::0;;-1:-1:-1;;;;;;3667:36:107::1;-1:-1:-1::0;;;;;3667:36:107;::::1;;::::0;;4242:19:::1;4259:2;4242:14:::0;:19:::1;:::i;:::-;4204:35;:57:::0;4304:19:::1;4321:2;4304:14:::0;:19:::1;:::i;:::-;4271:30;:52:::0;4361:1:::1;4333:25;:29:::0;;;4372:30:::1;:34:::0;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;2789:1624:107;;;;;;;:::o;33525:158::-;33612:7;33642:34;33656:19;:17;:19::i;33642:34::-;33635:41;;33525:158;:::o;32361:287::-;32465:7;32503:15;;:138;;-1:-1:-1;;;32503:138:107;;32562:4;32503:138;;;15359:51:140;15426:18;;;15419:34;;;-1:-1:-1;;;;;15489:32:140;;;15469:18;;;15462:60;32503:15:107;;;;:33;;15332:18:140;;32503:138:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7053:533::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;6566:30:107;;7333:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;7333:47:107;;7374:4:::1;7333:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;7333:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;7333:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;;;;:::i;:::-;7293:36;:125;7289:207;;7441:44;;-1:-1:-1::0;;;7441:44:107::1;;;;;;;;;;;7289:207;-1:-1:-1::0;7505:35:107::1;:74:::0;7053:533::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;17045:115:107:-;17107:46;17142:10;17107:34;:46::i;:::-;17045:115::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;18335:405:107:-;18472:37;-1:-1:-1;;;;;;;;;;;18498:10:107;18472:7;:37::i;:::-;18451:152;;;;-1:-1:-1;;;18451:152:107;;16057:2:140;18451:152:107;;;16039:21:140;16096:2;16076:18;;;16069:30;;;16135:34;16115:18;;;16108:62;16206:34;16186:18;;;16179:62;-1:-1:-1;;;16257:19:140;;;16250:35;16302:19;;18451:152:107;15855:472:140;18451:152:107;18647:31;;18613:66;;;;:33;:66;;;;;;;;18680:27;;18613:95;;;;;;;;:118;;;;;;;;;;;;;;;;;;;;18335:405::o;9951:929::-;10000:7;10392:17;10412:27;:25;:27::i;:::-;10392:47;;10449:17;10469:19;:17;:19::i;:::-;10498:26;10527:15;;:66;;-1:-1:-1;;;10527:66:107;;10587:4;10527:66;;;6800:51:140;10449:39:107;;-1:-1:-1;10498:26:107;;-1:-1:-1;;;;;10527:15:107;;;;:51;;6773:18:140;;10527:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10527:66:107;;;;;;;;;;;;:::i;:::-;10498:95;;10607:9;:16;10627:1;10607:21;10603:69;;10659:1;10644:17;;;;;9951:929;:::o;10603:69::-;10681:26;10771:9;:16;10745:9;10756;10728:38;;;;;;;;17463:19:140;;;17507:2;17498:12;;17491:28;17544:2;17535:12;;17306:247;10728:38:107;;;;;;;;;;;;;10718:49;;;;;;10710:58;;:77;;;;:::i;:::-;10681:106;;10844:9;10854:18;10844:29;;;;;;;;:::i;:::-;;;;;;;10837:36;;;;;;9951:929;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;8946:165:107:-;9013:7;9039:15;;:65;;-1:-1:-1;;;9039:65:107;;9098:4;9039:65;;;6800:51:140;-1:-1:-1;;;;;9039:15:107;;;;:50;;6773:18:140;;9039:65:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8574:133::-;8622:7;8648:15;;:52;;-1:-1:-1;;;8648:52:107;;8694:4;8648:52;;;6800:51:140;-1:-1:-1;;;;;8648:15:107;;;;:37;;6773:18:140;;8648:52:107;6654:203:140;4837:570:107;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;5033:21:107::1;5057:15:::0;;:47:::1;::::0;-1:-1:-1;;;5057:47:107;;5098:4:::1;5057:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;5057:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;5057:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5033:71:::0;-1:-1:-1;5033:71:107;5229:26:::1;5233:22:::0;5229:1:::1;:26;:::i;:::-;:43;5225:120;;5296:38;;-1:-1:-1::0;;;5296:38:107::1;;;;;;;;;;;5225:120;-1:-1:-1::0;;5354:21:107::1;:46:::0;4837:570::o;32654:607::-;32727:7;32929:15;;:76;;-1:-1:-1;;;32929:76:107;;32990:4;32929:76;;;6800:51:140;32727:7:107;;-1:-1:-1;;;;;32929:15:107;;:39;;6773:18:140;;32929:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32929:76:107;;;;;;;;;;;;:::i;:::-;32899:106;;33015:18;33052:9;33047:181;33071:10;:17;33067:1;:21;33047:181;;;33178:39;33196:5;33203:10;33214:1;33203:13;;;;;;;;:::i;:::-;;;;;;;33178:17;:39::i;:::-;33164:53;;;;:::i;:::-;;-1:-1:-1;33090:3:107;;33047:181;;;-1:-1:-1;33244:10:107;32654:607;-1:-1:-1;;;32654:607:107:o;32108:176::-;32204:7;32230:47;32247:19;:17;:19::i;:::-;32268:8;32230:16;:47::i;1866:326::-;1966:39;2362:4:19;1994:10:107;1966:7;:39::i;:::-;1945:120;;;;-1:-1:-1;;;1945:120:107;;;;;;;:::i;:::-;2080:9;2075:111;2099:8;:15;2095:1;:19;2075:111;;;2135:40;-1:-1:-1;;;;;;;;;;;2163:8:107;2172:1;2163:11;;;;;;;;:::i;:::-;;;;;;;2135:9;:40::i;:::-;2116:3;;2075:111;;;;1866:326;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;33850:165:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33961:30:107::1;:47:::0;33850:165::o;8131:129::-;8180:7;8206:15;;:47;;-1:-1:-1;;;8206:47:107;;8247:4;8206:47;;;6800:51:140;-1:-1:-1;;;;;8206:15:107;;;;:32;;6773:18:140;;8206:47:107;6654:203:140;9197:414:107;9255:7;9471:15;;:47;;-1:-1:-1;;;9471:47:107;;9512:4;9471:47;;;6800:51:140;9296:15:107;;9255:7;;-1:-1:-1;;;;;9471:15:107;;;;:32;;6773:18:140;;9471:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9457:61;;:11;:61;:::i;:::-;9426:92;;9582:21;;9559:20;:44;;;;:::i;:::-;9535:69;;:20;:69;:::i;:::-;9528:76;;;;9197:414;:::o;14339:430::-;14471:22;;;;;:63;;;14497:37;-1:-1:-1;;;;;;;;;;;14523:10:107;14497:7;:37::i;:::-;14450:144;;;;-1:-1:-1;;;14450:144:107;;;;;;;:::i;:::-;14609:9;14604:159;14628:21;:28;14624:1;:32;14604:159;;;14677:75;14715:10;14727:21;14749:1;14727:24;;;;;;;;:::i;:::-;;;;;;;14677:37;:75::i;:::-;14658:3;;14604:159;;8745:131;8795:7;8821:15;;:48;;-1:-1:-1;;;8821:48:107;;8863:4;8821:48;;;6800:51:140;-1:-1:-1;;;;;8821:15:107;;;;:33;;6773:18:140;;8821:48:107;6654:203:140;30800:311:107;30921:7;30959:15;;:145;;-1:-1:-1;;;30959:145:107;;31009:4;30959:145;;;18614:51:140;18681:18;;;18674:34;;;-1:-1:-1;;;;;18744:32:140;;;18724:18;;;18717:60;18813:32;;;18793:18;;;18786:60;30959:15:107;;;;:24;;18586:19:140;;30959:145:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30940:164;30800:311;-1:-1:-1;;;;30800:311:107:o;528:89:110:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;587:23:110::1;:21;:23::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;528:89:110:o;2198:136:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2290:37:107::1;-1:-1:-1::0;;;;;;;;;;;2318:8:107::1;2290:9;:37::i;8331:207::-:0;8381:7;8483:15;;:47;;-1:-1:-1;;;8483:47:107;;8524:4;8483:47;;;6800:51:140;8422:15:107;;-1:-1:-1;;;;;8483:15:107;;:32;;6773:18:140;;8483:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8469:61;;:11;:61;:::i;:::-;8454:77;;:11;:77;:::i;:::-;8447:84;;;8331:207;:::o;3732::19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4465:195:107:-;4523:39;2362:4:19;4551:10:107;4523:7;:39::i;:::-;4515:89;;;;-1:-1:-1;;;4515:89:107;;19059:2:140;4515:89:107;;;19041:21:140;19098:2;19078:18;;;19071:30;19137:34;19117:18;;;19110:62;-1:-1:-1;;;19188:18:140;;;19181:35;19233:19;;4515:89:107;18857:401:140;4515:89:107;4614:15;;;:39;;;-1:-1:-1;;;4614:39:107;;;;-1:-1:-1;;;;;4614:15:107;;;;:37;;:39;;;;;;;;;;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;15037:159;15101:7;15163:26;;15127:33;;:62;;;;:::i;1623:237::-;1708:39;2362:4:19;1736:10:107;1708:7;:39::i;:::-;1687:120;;;;-1:-1:-1;;;1687:120:107;;;;;;;:::i;:::-;1817:36;-1:-1:-1;;;;;;;;;;;1845:7:107;1817:9;:36::i;34600:177::-;34703:15;;:66;;-1:-1:-1;;;34703:66:107;;34763:4;34703:66;;;6800:51:140;34668:16:107;;-1:-1:-1;;;;;34703:15:107;;:51;;6773:18:140;;34703:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34703:66:107;;;;;;;;;;;;:::i;31543:484::-;31645:7;31694:15;;:76;;-1:-1:-1;;;31694:76:107;;31755:4;31694:76;;;6800:51:140;31645:7:107;;-1:-1:-1;;;;;31694:15:107;;:39;;6773:18:140;;31694:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31694:76:107;;;;;;;;;;;;:::i;:::-;31664:106;;31780:18;31817:9;31812:182;31836:10;:17;31832:1;:21;31812:182;;;31943:40;31952:5;31959:10;31970:1;31959:13;;;;;;;;:::i;:::-;;;;;;;31974:8;31943;:40::i;:::-;31929:54;;;;:::i;:::-;;-1:-1:-1;31855:3:107;;31812:182;;;-1:-1:-1;32010:10:107;31543:484;-1:-1:-1;;;;31543:484:107:o;31211:198::-;31326:7;31352:50;31361:19;:17;:19::i;:::-;31382:9;31393:8;31352;:50::i;2340:226::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2452:9:107::1;2447:113;2471:9;:16;2467:1;:20;2447:113;;;2508:41;-1:-1:-1::0;;;;;;;;;;;2536:9:107::1;2546:1;2536:12;;;;;;;;:::i;2508:41::-;2489:3;;2447:113;;11026:250:::0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;11211:15:107::1;::::0;:58:::1;::::0;-1:-1:-1;;;11211:58:107;;11253:4:::1;11211:58;::::0;::::1;19437:51:140::0;19504:18;;;19497:34;;;-1:-1:-1;;;;;11211:15:107;;::::1;::::0;:33:::1;::::0;19410:18:140;;11211:58:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11026:250:::0;;:::o;7737:132::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;7830:22:107::1;:32:::0;;-1:-1:-1;;7830:32:107::1;::::0;::::1;;::::0;;;::::1;::::0;;7737:132::o;33339:180::-;33437:7;33463:49;33481:19;:17;:19::i;:::-;33502:9;33463:17;:49::i;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5787:464:107:-:0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;7689:35:107;;6008:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;6008:47:107;;6049:4:::1;6008:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;6008:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;6008:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;;;:::i;:::-;5973:31;:125;5969:202;;6121:39;;-1:-1:-1::0;;;6121:39:107::1;;;;;;;;;;;5969:202;-1:-1:-1::0;6180:30:107::1;:64:::0;5787:464::o;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;11817:2174:107:-;12062:27;;12050:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;12050:50:107;;;;;;;;;:57;:62;12046:113;;12133:26;;-1:-1:-1;;;12133:26:107;;;;;;;;;;;12046:113;12630:27;;12601:26;;12565:33;;:62;;12601:26;12565:62;:::i;:::-;:92;12561:156;;;12680:26;;-1:-1:-1;;;12680:26:107;;;;;;;;;;;12561:156;13081:27;;13051:58;;;;:29;:58;;;;;;:63;;13047:172;;13191:17;:15;:17::i;:::-;13160:27;;13130:58;;;;:29;:58;;;;;:78;13047:172;13287:27;;13275:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;13275:50:107;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;13425:106;;13515:15;13425:27;:106::i;:::-;13593:38;13634:43;13668:8;13634:33;:43::i;:::-;13703:27;;13687:44;;;;:15;:44;;;;;;;;13732:31;;;;13687:77;;;;;;;:111;;13593:84;;-1:-1:-1;13593:84:107;;13687:77;;:44;:111;;13593:84;;13687:111;:::i;:::-;;;;-1:-1:-1;;13857:28:107;;;;;13899:31;;;;;13814:170;;19716:25:140;;;19757:18;;;19750:34;;;13857:28:107;;13814:170;;19689:18:140;13814:170:107;;;;;;;11963:2028;11817:2174;;:::o;738:128:110:-;6931:20:20;:18;:20::i;:::-;817:42:110::1;2362:4:19;848:10:110;817;:42::i;17774:485:107:-:0;18173:67;18202:33;;18238:1;18202:37;;;;:::i;:::-;18173:28;:67::i;:::-;18166:87;;17774:485;:::o;7270:387:19:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:21;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;991:117:110;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;6818:32:140;;6518:60:21;;;6800:51:140;6773:18;;6518:60:21;6654:203:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1507:25:140;;;1480:18;;6317:34:21;1361:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;623:109:110;6931:20:20;:18;:20::i;:::-;692:33:110::1;:31;:33::i;4381:197:19:-:0;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;19455:32:140;;4514:47:19;;;19437:51:140;19504:18;;;19497:34;;;19410:18;;4514:47:19;19263:274:140;16170:443:107;16285:29;;;;:21;:29;;;;;;;;:41;;;;;;;;;:46;16281:263;;16170:443;;;:::o;16281:263::-;16415:9;16428:1;16415:14;16411:133;;16170:443;;;:::o;16411:133::-;16553:29;;;;:21;:29;;;;;;;;:41;;;;;;;;:53;16170:443::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;25987:4503:107;26069:4;26111:47;;;:29;:47;;;;;;16999:33;;26168:1014;;;26426:31;26460:29;26426:31;26490:18;26507:1;26490:16;:18;:::i;:::-;26460:49;;;;;;;;;;;;26426:83;;26545:23;26527:15;:41;26523:649;;;26591:32;26626:37;:35;:37::i;:::-;26591:72;;26791:9;26786:313;26810:15;:22;26806:1;:26;26786:313;;;26865:11;:29;26877:16;26865:29;;;;;;;;;;;:49;26895:15;26911:1;26895:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;26865:49:107;-1:-1:-1;;;;;26865:49:107;;;;;;;;;;;;:56;;;26925:1;26865:61;26861:220;;26954:47;;;;:29;:47;;;;;:73;;;27053:5;;26861:220;26834:3;;26786:313;;;;27134:23;27116:41;;26573:599;26523:649;26307:875;26168:1014;27500:15;27478:19;:17;:19::i;:::-;:37;27471:249;;;27694:15;:13;:15::i;:::-;27471:249;;;27905:21;27968:1;27934:30;27948:15;27934:13;:30::i;:::-;27930:34;;:1;:34;:::i;:::-;27929:40;;;;:::i;:::-;:44;;27972:1;27929:44;:::i;:::-;27905:68;;27983:26;28012:37;:35;:37::i;:::-;27983:66;;28311:31;28365:9;28360:1688;28384:9;:16;28380:1;:20;28360:1688;;;28421:16;28440:9;28450:1;28440:12;;;;;;;;:::i;:::-;;;;;;;;;;;;28466:48;28517:29;;;:11;:29;;;;;;-1:-1:-1;;;;;28517:39:107;;;;;;;;;;28466:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28440:12;;-1:-1:-1;28466:90:107;28759:47;;28755:61;;28808:8;;;;28755:61;28935:27;;28886:30;28919:44;;;:15;:44;;;;;;;;28964:31;;;;28919:77;;;;;;;;29015:39;;;29011:1027;;16028:27;;29262:17;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;29443:35;;29431:47;;16006:83;29431:47;:::i;:::-;29413:15;:65;29409:76;;;29480:5;;;;;;29409:76;29504:66;29537:20;29559:10;29504:32;:66::i;:::-;-1:-1:-1;29617:4:107;;25987:4503;-1:-1:-1;;;;;;;;;;25987:4503:107:o;29011:1027::-;28407:1641;;;28360:1688;28402:3;;28360:1688;;;;30261:26;30260:27;:70;;;;;30311:19;:17;:19::i;:::-;30291:17;:15;:17::i;:::-;:39;30260:70;30256:206;;;30346:15;:13;:15::i;:::-;-1:-1:-1;30382:4:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;30256:206::-;-1:-1:-1;30478:5:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;2264:344:40:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;22785:1897:107:-;22897:22;22922:19;:17;:19::i;:::-;22897:44;;22951:26;22980:37;:35;:37::i;:::-;22951:66;;23059:9;23054:1580;23078:9;:16;23074:1;:20;23054:1580;;;23172:1;23119:36;;;:20;:36;;;;;23156:12;;23172:1;;23156:9;;23166:1;;23156:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23119:50:107;-1:-1:-1;;;;;23119:50:107;;;;;;;;;;;;;:54;23115:697;;;23273:14;23371:47;23405:9;23415:1;23405:12;;;;;;;;:::i;:::-;;;;;;;23371:33;:47::i;:::-;23343:25;;23290:20;:36;23311:14;23290:36;;;;;;;;;;;:50;23327:9;23337:1;23327:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23290:50:107;-1:-1:-1;;;;;23290:50:107;;;;;;;;;;;;;:78;;;;:::i;:::-;:128;;;;:::i;:::-;23563:15;;23596:12;;23273:145;;-1:-1:-1;;;;;;23563:15:107;;:32;;23596:9;;23606:1;;23596:12;;;;;;:::i;:::-;;;;;;;;;;;23618:16;;23563:72;;-1:-1:-1;;;;;;23563:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;23563:72:107;;;15359:51:140;15426:18;;;15419:34;;;23618:16:107;;15469:18:140;;;15462:60;15332:18;;23563:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23175:637;23115:697;23932:1;23874:41;;;:25;:41;;;;;23916:12;;23932:1;;23916:9;;23926:1;;23916:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23874:55:107;-1:-1:-1;;;;;23874:55:107;;;;;;;;;;;;;:59;23870:754;;;23953:14;24061:47;24095:9;24105:1;24095:12;;;;;;;;:::i;24061:47::-;24028:30;;23970:25;:41;23996:14;23970:41;;;;;;;;;;;:55;24012:9;24022:1;24012:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23970:55:107;-1:-1:-1;;;;;23970:55:107;;;;;;;;;;;;;:88;;;;:::i;:::-;:138;;;;:::i;:::-;24126:15;;24159:12;;23953:155;;-1:-1:-1;;;;;;24126:15:107;;:32;;24159:9;;24169:1;;24159:12;;;;;;:::i;:::-;;;;;;;;;;;24181:16;;24126:72;;-1:-1:-1;;;;;;24126:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;24126:72:107;;;15359:51:140;15426:18;;;15419:34;;;24181:16:107;;15469:18:140;;;15462:60;15332:18;;24126:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23935:689;23870:754;23096:3;;23054:1580;;;-1:-1:-1;24644:15:107;;;:31;;;-1:-1:-1;;;24644:31:107;;;;-1:-1:-1;;;;;24644:15:107;;;;:29;;:31;;;;;;;;;;:15;;:31;;;;;;;;;;19647:2891;19776:29;19808:19;:17;:19::i;:::-;20102:27;;20072:58;;;;:29;:58;;;;;;19776:51;;-1:-1:-1;20072:83:107;;20068:155;;20178:34;;-1:-1:-1;;;20178:34:107;;;;;;;;;;;20068:155;20372:27;;:31;;20402:1;;20372:31;:::i;:::-;20335:33;;:68;20331:140;;20426:34;;-1:-1:-1;;;20426:34:107;;;;;;;;;;;20331:140;20571:26;20600:37;:35;:37::i;:::-;20571:66;;20652:9;20647:269;20671:9;:16;20667:1;:20;20647:269;;;20781:20;:31;;;20712:11;:40;20724:20;:27;;;20712:40;;;;;;;;;;;:54;20753:9;20763:1;20753:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20712:54:107;-1:-1:-1;;;;;20712:54:107;;;;;;;;;;;;:65;;;:100;20708:198;;20832:20;:43;20853:21;20832:43;;;;;;;;;;;:57;20876:9;20886:1;20876:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20832:57:107;-1:-1:-1;;;;;20832:57:107;;;;;;;;;;;;;:59;;;;;;;;;:::i;:::-;;;;;;20708:198;20689:3;;20647:269;;;;20972:60;21011:20;20972:38;:60::i;:::-;20967:900;;21157:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21157:58:107;;;;;;;;;:63;;21219:1;;21157:48;:63;;21219:1;;21157:63;:::i;:::-;;;;-1:-1:-1;20967:900:107;;-1:-1:-1;20967:900:107;;21751:8;-1:-1:-1;;;;;21729:30:107;:18;:16;:18::i;:::-;-1:-1:-1;;;;;21729:30:107;;21725:132;;21779:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21779:58:107;;;;;;;;;:63;;21841:1;;21779:48;:63;;21841:1;;21779:63;:::i;:::-;;;;-1:-1:-1;;21725:132:107;21911:31;;21877:66;;;;:33;:66;;;;;;;;21944:27;;21877:95;;;;;;;:118;;;;;;;;;;;;;;;;;;;;;;;;;;;22005:33;:63;;;22078:44;;;:15;:44;;;;;:55;;-1:-1:-1;;;;;;22078:55:107;-1:-1:-1;;;;;22078:55:107;;;;;22172:27;;22143:57;;:28;:57;;;;;22203:12;22143:72;;22257:27;;22225:60;;:31;:60;;;;;;22288:15;22225:78;;22407:28;22449:31;;22494:27;;22370:161;;19716:25:140;;;19757:18;;;19750:34;;;;22370:161:107;;19689:18:140;22370:161:107;;;;;;;19766:2772;;19647:2891;;:::o;1671:281:40:-;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;6818:32:140;;1805:47:40;;;6800:51:140;6773:18;;1805:47:40;6654:203:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;6818:32:140;;4933:24:53;;;6800:51:140;6773:18;;4933:24:53;6654:203:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:466;574:6;582;590;643:2;631:9;622:7;618:23;614:32;611:52;;;659:1;656;649:12;611:52;-1:-1:-1;;704:23:140;;;824:2;809:18;;796:32;;-1:-1:-1;927:2:140;912:18;;;899:32;;497:466;-1:-1:-1;497:466:140:o;1543:226::-;1602:6;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;-1:-1:-1;1716:23:140;;1543:226;-1:-1:-1;1543:226:140:o;1774:127::-;1835:10;1830:3;1826:20;1823:1;1816:31;1866:4;1863:1;1856:15;1890:4;1887:1;1880:15;1906:275;1977:2;1971:9;2042:2;2023:13;;-1:-1:-1;;2019:27:140;2007:40;;-1:-1:-1;;;;;2062:34:140;;2098:22;;;2059:62;2056:88;;;2124:18;;:::i;:::-;2160:2;2153:22;1906:275;;-1:-1:-1;1906:275:140:o;2186:727::-;2253:5;2301:4;2289:9;2284:3;2280:19;2276:30;2273:50;;;2319:1;2316;2309:12;2273:50;2372:2;2366:9;2414:4;2402:17;;-1:-1:-1;;;;;2434:34:140;;2470:22;;;2431:62;2428:88;;;2496:18;;:::i;:::-;2532:2;2525:22;;;2616:23;;2648;;2744:2;2729:18;;;2716:32;2764:15;;;2757:32;2847:18;;;2834:32;2882:15;;;2875:32;;;;-1:-1:-1;2565:6:140;2186:727;-1:-1:-1;2186:727:140:o;2918:254::-;3016:6;3069:2;3057:9;3048:7;3044:23;3040:32;3037:52;;;3085:1;3082;3075:12;3037:52;3108:58;3158:7;3147:9;3108:58;:::i;3177:149::-;-1:-1:-1;;;;;3270:31:140;;3260:42;;3250:70;;3316:1;3313;3306:12;3331:183;3391:4;-1:-1:-1;;;;;3416:6:140;3413:30;3410:56;;;3446:18;;:::i;:::-;-1:-1:-1;3491:1:140;3487:14;3503:4;3483:25;;3331:183::o;3519:762::-;3573:5;3626:3;3619:4;3611:6;3607:17;3603:27;3593:55;;3644:1;3641;3634:12;3593:55;3684:6;3671:20;3711:64;3727:47;3767:6;3727:47;:::i;:::-;3711:64;:::i;:::-;3799:3;3823:6;3818:3;3811:19;3855:4;3850:3;3846:14;3839:21;;3916:4;3906:6;3903:1;3899:14;3891:6;3887:27;3883:38;3869:52;;3944:3;3936:6;3933:15;3930:35;;;3961:1;3958;3951:12;3930:35;3997:4;3989:6;3985:17;4011:239;4027:6;4022:3;4019:15;4011:239;;;4109:3;4096:17;4126:49;4169:5;4126:49;:::i;:::-;4188:18;;4235:4;4226:14;;;;4044;4011:239;;;-1:-1:-1;4268:7:140;3519:762;-1:-1:-1;;;;;3519:762:140:o;4286:1170::-;4450:6;4458;4466;4474;4482;4490;4498;4551:3;4539:9;4530:7;4526:23;4522:33;4519:53;;;4568:1;4565;4558:12;4519:53;4607:9;4594:23;4626:49;4669:5;4626:49;:::i;:::-;4694:5;-1:-1:-1;4772:2:140;4757:18;;4744:32;;-1:-1:-1;4875:2:140;4860:18;;4847:32;;-1:-1:-1;4978:2:140;4963:18;;4950:32;;-1:-1:-1;5059:3:140;5044:19;;5031:33;-1:-1:-1;;;;;5076:30:140;;5073:50;;;5119:1;5116;5109:12;5073:50;5142:61;5195:7;5186:6;5175:9;5171:22;5142:61;:::i;:::-;5132:71;-1:-1:-1;;5276:3:140;5261:19;;5248:33;;-1:-1:-1;5359:3:140;5344:19;;5331:33;5373:51;5331:33;5373:51;:::i;:::-;5443:7;5433:17;;;4286:1170;;;;;;;;;;:::o;5461:385::-;5529:6;5537;5590:2;5578:9;5569:7;5565:23;5561:32;5558:52;;;5606:1;5603;5596:12;5558:52;5651:23;;;-1:-1:-1;5750:2:140;5735:18;;5722:32;5763:51;5722:32;5763:51;:::i;:::-;5833:7;5823:17;;;5461:385;;;;;:::o;6862:346::-;6930:6;6938;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;-1:-1:-1;;7052:23:140;;;7172:2;7157:18;;;7144:32;;-1:-1:-1;6862:346:140:o;7537:265::-;7596:6;7649:2;7637:9;7628:7;7624:23;7620:32;7617:52;;;7665:1;7662;7655:12;7617:52;7704:9;7691:23;7723:49;7766:5;7723:49;:::i;7807:348::-;7891:6;7944:2;7932:9;7923:7;7919:23;7915:32;7912:52;;;7960:1;7957;7950:12;7912:52;8000:9;7987:23;-1:-1:-1;;;;;8025:6:140;8022:30;8019:50;;;8065:1;8062;8055:12;8019:50;8088:61;8141:7;8132:6;8121:9;8117:22;8088:61;:::i;8160:918::-;8237:6;8245;8298:2;8286:9;8277:7;8273:23;8269:32;8266:52;;;8314:1;8311;8304:12;8266:52;8353:9;8340:23;8372:49;8415:5;8372:49;:::i;:::-;8440:5;-1:-1:-1;8496:2:140;8481:18;;8468:32;-1:-1:-1;;;;;8512:30:140;;8509:50;;;8555:1;8552;8545:12;8509:50;8578:22;;8631:4;8623:13;;8619:27;-1:-1:-1;8609:55:140;;8660:1;8657;8650:12;8609:55;8700:2;8687:16;-1:-1:-1;;;;;8718:6:140;8715:30;8712:56;;;8748:18;;:::i;:::-;8790:57;8837:2;8814:17;;-1:-1:-1;;8810:31:140;8843:2;8806:40;8790:57;:::i;:::-;8870:6;8863:5;8856:21;8918:7;8913:2;8904:6;8900:2;8896:15;8892:24;8889:37;8886:57;;;8939:1;8936;8929:12;8886:57;8994:6;8989:2;8985;8981:11;8976:2;8969:5;8965:14;8952:49;9046:1;9041:2;9032:6;9025:5;9021:18;9017:27;9010:38;9067:5;9057:15;;;;;8160:918;;;;;:::o;9083:965::-;9206:6;9259:2;9247:9;9238:7;9234:23;9230:32;9227:52;;;9275:1;9272;9265:12;9227:52;9315:9;9302:23;-1:-1:-1;;;;;9340:6:140;9337:30;9334:50;;;9380:1;9377;9370:12;9334:50;9403:22;;9456:4;9448:13;;9444:27;-1:-1:-1;9434:55:140;;9485:1;9482;9475:12;9434:55;9525:2;9512:16;9548:64;9564:47;9604:6;9564:47;:::i;9548:64::-;9634:3;9658:6;9653:3;9646:19;9690:2;9685:3;9681:12;9674:19;;9748:2;9740:4;9732:6;9728:17;9724:2;9720:26;9716:35;9702:49;;9774:7;9766:6;9763:19;9760:39;;;9795:1;9792;9785:12;9760:39;9827:2;9823;9819:11;9808:22;;9839:179;9855:6;9850:3;9847:15;9839:179;;;9923:52;9967:7;9962:3;9923:52;:::i;:::-;9918:3;9911:65;10005:2;10000:3;9996:12;9989:19;;9881:4;9876:3;9872:14;9865:21;;9839:179;;;10037:5;9083:965;-1:-1:-1;;;;;;9083:965:140:o;10053:544::-;10130:6;10138;10146;10199:2;10187:9;10178:7;10174:23;10170:32;10167:52;;;10215:1;10212;10205:12;10167:52;10260:23;;;-1:-1:-1;10359:2:140;10344:18;;10331:32;10372:51;10331:32;10372:51;:::i;:::-;10442:7;-1:-1:-1;10501:2:140;10486:18;;10473:32;10514:51;10473:32;10514:51;:::i;:::-;10584:7;10574:17;;;10053:544;;;;;:::o;10602:446::-;10655:3;10693:5;10687:12;10720:6;10715:3;10708:19;10752:4;10747:3;10743:14;10736:21;;10791:4;10784:5;10780:16;10814:1;10824:199;10838:6;10835:1;10832:13;10824:199;;;10903:13;;-1:-1:-1;;;;;10899:39:140;10887:52;;10968:4;10959:14;;;;10996:17;;;;10935:1;10853:9;10824:199;;;-1:-1:-1;11039:3:140;;10602:446;-1:-1:-1;;;;10602:446:140:o;11053:261::-;11232:2;11221:9;11214:21;11195:4;11252:56;11304:2;11293:9;11289:18;11281:6;11252:56;:::i;11319:250::-;11404:1;11414:113;11428:6;11425:1;11422:13;11414:113;;;11504:11;;;11498:18;11485:11;;;11478:39;11450:2;11443:10;11414:113;;;-1:-1:-1;;11561:1:140;11543:16;;11536:27;11319:250::o;11574:396::-;11723:2;11712:9;11705:21;11686:4;11755:6;11749:13;11798:6;11793:2;11782:9;11778:18;11771:34;11814:79;11886:6;11881:2;11870:9;11866:18;11861:2;11853:6;11849:15;11814:79;:::i;:::-;11954:2;11933:15;-1:-1:-1;;11929:29:140;11914:45;;;;11961:2;11910:54;;11574:396;-1:-1:-1;;11574:396:140:o;11975:424::-;12043:6;12051;12104:2;12092:9;12083:7;12079:23;12075:32;12072:52;;;12120:1;12117;12110:12;12072:52;12159:9;12146:23;12178:49;12221:5;12178:49;:::i;:::-;12246:5;-1:-1:-1;12303:2:140;12288:18;;12275:32;12316:51;12275:32;12316:51;:::i;12755:273::-;12811:6;12864:2;12852:9;12843:7;12839:23;12835:32;12832:52;;;12880:1;12877;12870:12;12832:52;12919:9;12906:23;12972:5;12965:13;12958:21;12951:5;12948:32;12938:60;;12994:1;12991;12984:12;13684:127;13745:10;13740:3;13736:20;13733:1;13726:31;13776:4;13773:1;13766:15;13800:4;13797:1;13790:15;13816:125;13881:9;;;13902:10;;;13899:36;;;13915:18;;:::i;13946:398::-;14148:2;14130:21;;;14187:2;14167:18;;;14160:30;14226:34;14221:2;14206:18;;14199:62;-1:-1:-1;;;14292:2:140;14277:18;;14270:32;14334:3;14319:19;;13946:398::o;14349:332::-;14556:6;14545:9;14538:25;14599:2;14594;14583:9;14579:18;14572:30;14519:4;14619:56;14671:2;14660:9;14656:18;14648:6;14619:56;:::i;14686:127::-;14747:10;14742:3;14738:20;14735:1;14728:31;14778:4;14775:1;14768:15;14802:4;14799:1;14792:15;14818:120;14858:1;14884;14874:35;;14889:18;;:::i;:::-;-1:-1:-1;14923:9:140;;14818:120::o;15533:184::-;15603:6;15656:2;15644:9;15635:7;15631:23;15627:32;15624:52;;;15672:1;15669;15662:12;15624:52;-1:-1:-1;15695:16:140;;15533:184;-1:-1:-1;15533:184:140:o;15722:128::-;15789:9;;;15810:11;;;15807:37;;;15824:18;;:::i;16332:969::-;16427:6;16480:2;16468:9;16459:7;16455:23;16451:32;16448:52;;;16496:1;16493;16486:12;16448:52;16529:9;16523:16;-1:-1:-1;;;;;16554:6:140;16551:30;16548:50;;;16594:1;16591;16584:12;16548:50;16617:22;;16670:4;16662:13;;16658:27;-1:-1:-1;16648:55:140;;16699:1;16696;16689:12;16648:55;16732:2;16726:9;16755:64;16771:47;16811:6;16771:47;:::i;16755:64::-;16841:3;16865:6;16860:3;16853:19;16897:2;16892:3;16888:12;16881:19;;16952:2;16942:6;16939:1;16935:14;16931:2;16927:23;16923:32;16909:46;;16978:7;16970:6;16967:19;16964:39;;;16999:1;16996;16989:12;16964:39;17031:2;17027;17023:11;17012:22;;17043:228;17059:6;17054:3;17051:15;17043:228;;;17132:3;17126:10;17149:49;17192:5;17149:49;:::i;:::-;17211:18;;17258:2;17076:12;;;;17249;;;;17043:228;;17558:112;17590:1;17616;17606:35;;17621:18;;:::i;:::-;-1:-1:-1;17655:9:140;;17558:112::o;17675:127::-;17736:10;17731:3;17727:20;17724:1;17717:31;17767:4;17764:1;17757:15;17791:4;17788:1;17781:15;17807:168;17880:9;;;17911;;17928:15;;;17922:22;;17908:37;17898:71;;17949:18;;:::i;17980:398::-;18182:2;18164:21;;;18221:2;18201:18;;;18194:30;18260:34;18255:2;18240:18;;18233:62;-1:-1:-1;;;18326:2:140;18311:18;;18304:32;18368:3;18353:19;;17980:398::o;20263:135::-;20302:3;20323:17;;;20320:43;;20343:18;;:::i;:::-;-1:-1:-1;20390:1:140;20379:13;;20263:135::o;20403:287::-;20532:3;20570:6;20564:13;20586:66;20645:6;20640:3;20633:4;20625:6;20621:17;20586:66;:::i;:::-;20668:16;;;;;20403:287;-1:-1:-1;;20403:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":9958,"length":32},{"start":9999,"length":32},{"start":10323,"length":32}]}},"methodIdentifiers":{"COMMITMENT_ADMIN()":"80e460f0","DEFAULT_ADMIN_ROLE()":"a217fddf","TRUSTED_ATTESTER()":"5db916ab","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptGenesisCeremony()":"92a2ebf3","attesterRewardPoints(uint256,address)":"6f865294","batchGrantCommitmentAdmin(address[])":"4b47d955","batchGrantTrustedAttester(address[])":"cf6772ad","commitmentFirstSeenAt(uint256,bytes32)":"d7830688","commitmentStake(uint256,bytes32)":"c19b406c","commitments(uint256,address)":"e90d4c06","createSuperBlockCommitment(uint256,bytes32,bytes32)":"026583d7","forceLatestCommitment((uint256,bytes32,bytes32))":"08c7050f","getAcceptingEpoch()":"6c713af8","getAttesterRewardPoints(uint256,address)":"6978ab12","getAttesterStake(uint256,address)":"ba26513e","getAttesterStakeForAcceptingEpoch(address)":"491d0467","getCommitmentByAttester(uint256,address)":"f1949add","getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":"e07472ef","getCustodianStake(uint256,address)":"1de38fe1","getCustodianStakeForAcceptingEpoch(address)":"d440116d","getEpochDuration()":"5d3ea8f1","getEpochStartTime()":"90879f64","getLastPostconfirmedSuperBlockHeight()":"59b99597","getMaxTolerableSuperBlockHeight()":"943b79e2","getMinCommitmentAgeForPostconfirmation()":"ab208ebd","getNextAcceptingEpochWithException()":"3752d675","getPostconfirmedCommitment(uint256)":"2bfd11d6","getPostconfirmer()":"35ea1c63","getPostconfirmerDuration()":"1241ebe3","getPostconfirmerPrivilegeDuration()":"028e490a","getPostconfirmerRewardPoints(uint256,address)":"ed8a1d59","getPostconfirmerStartTime()":"5f4d642e","getPresentEpoch()":"37d7f58f","getRoleAdmin(bytes32)":"248a9ca3","getStake(uint256,address,address)":"7aa81c2a","getStakeForAcceptingEpoch(address,address)":"bb04bd2f","getStakedAttestersForAcceptingEpoch()":"aa0d6fcd","getSuperBlockHeightAssignedEpoch(uint256)":"d283392e","getTotalStake(uint256)":"45367f23","getTotalStakeForAcceptingEpoch()":"14e38026","getValidatorCommitmentAtSuperBlockHeight(uint256,address)":"556d97c8","grantCommitmentAdmin(address)":"949d7c2a","grantRole(bytes32,address)":"2f2ff15d","grantTrustedAttester(address)":"81df1746","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address,uint256,uint256,uint256,address[],uint256,address)":"107e21ca","isCommitted(uint256)":"e4a3fb74","isPostconfirmed(uint256)":"ec23ec2e","isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":"0cf6b6bd","lastPostconfirmedSuperBlockHeight()":"fdafe9ca","leadingSuperBlockTolerance()":"03d3f7fd","minCommitmentAgeForPostconfirmation()":"bff92c8c","moveTokenAddress()":"58376877","openAttestationEnabled()":"ef9ae15c","postconfirmSuperBlocksAndRollover()":"26624e37","postconfirmedAtL1BlockHeight(uint256)":"7ac561c8","postconfirmedAtL1BlockHeightByPostconfirmer(uint256)":"7cfd8205","postconfirmedAtL1BlockTimestamp(uint256)":"a207fe2f","postconfirmedBy(uint256)":"91807e4f","postconfirmedByPostconfirmer(uint256)":"08750a32","postconfirmedSuperBlocks(uint256)":"eda67fc4","postconfirmedSuperBlocksVersion()":"ec18c186","postconfirmerDuration()":"4ceb2e66","postconfirmerPrivilegeDuration()":"55b8119d","postconfirmerRewardPoints(uint256,address)":"1db859c7","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardPerAttestationPoint()":"5f83c7d5","rewardPerPostconfirmationPoint()":"d3eef4cc","setAcceptingEpoch(uint256)":"d03509ec","setMinCommitmentAgeForPostconfirmation(uint256)":"1f83e2a3","setOpenAttestationEnabled(bool)":"d2526fef","setPostconfirmedCommitmentAtBlockHeight((uint256,bytes32,bytes32))":"3119edd4","setPostconfirmerDuration(uint256)":"3d645927","setPostconfirmerPrivilegeDuration(uint256)":"da7d28b6","setRewardPerAttestationPoint(uint256)":"0d39f7f0","setRewardPerPostconfirmationPoint(uint256)":"57342282","stakingContract()":"ee99205c","submitBatchSuperBlockCommitment((uint256,bytes32,bytes32)[])":"622e3616","submitSuperBlockCommitment((uint256,bytes32,bytes32))":"0e74b609","superBlockHeightAssignedEpoch(uint256)":"85e6b8c2","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286","versionedPostconfirmedSuperBlocks(uint256,uint256)":"3ba18005"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AttesterAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLongForEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnacceptableSuperBlockCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDurationTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"attesterStake\",\"type\":\"uint256\"}],\"name\":\"SuperBlockCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"SuperBlockPostconfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMITMENT_ADMIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_ATTESTER\",\"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\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"attesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchGrantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"}],\"name\":\"batchGrantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitement\",\"type\":\"bytes32\"}],\"name\":\"commitmentStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"name\":\"createSuperBlockCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"forceLatestCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCommitmentByAttester\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"getCommitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxTolerableSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getPostconfirmedCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"getPostconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPresentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getSuperBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getTotalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getValidatorCommitmentAtSuperBlockHeight\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"grantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"_stakingContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lastPostconfirmedSuperBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leadingSuperBlockTolerance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_custodians\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_moveTokenAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isCommitted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isPostconfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"isWithinPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leadingSuperBlockTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moveTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmSuperBlocksAndRollover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeightByPostconfirmer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedBy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedByPostconfirmer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmedSuperBlocksVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"postconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerAttestationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerPostconfirmationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minCommitmentAgeForPostconfirmation\",\"type\":\"uint256\"}],\"name\":\"setMinCommitmentAgeForPostconfirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOpenAttestationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"setPostconfirmedCommitmentAtBlockHeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerPrivilegeDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerPrivilegeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerAttestationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerPostconfirmationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingContract\",\"outputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment[]\",\"name\":\"superBlockCommitments\",\"type\":\"tuple[]\"}],\"name\":\"submitBatchSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"submitSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"superBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"versionedPostconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getPostconfirmerPrivilegeDuration()\":{\"returns\":{\"_0\":\"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"details\":\"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAcceptingEpoch(uint256)\":{\"params\":{\"newEpoch\":\"The new accepting epoch value\"}},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"params\":{\"_minCommitmentAgeForPostconfirmation\":\"New minimum commitment age \"}},\"setPostconfirmerDuration(uint256)\":{\"params\":{\"_postconfirmerDuration\":\"New postconfirmer term duration in time units\"}},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"params\":{\"_postconfirmerPrivilegeDuration\":\"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"PostconfirmerDurationTooLong()\":[{\"notice\":\"Error thrown when postconfirmer term is greater than 256 blocks\"}],\"PostconfirmerDurationTooLongForEpoch()\":[{\"notice\":\"Error thrown when postconfirmer term is too large for epoch duration\"}],\"minCommitmentAgeForPostconfirmationTooLong()\":[{\"notice\":\"Error thrown when minimum commitment age is greater than epoch duration\"}],\"postconfirmerPrivilegeDurationTooLong()\":[{\"notice\":\"Error thrown when maximum postconfirmer non-reactivity time is greater than epoch duration\"}]},\"kind\":\"user\",\"methods\":{\"COMMITMENT_ADMIN()\":{\"notice\":\"The role that allows the commitment admin to set the accepting epoch\"},\"TRUSTED_ATTESTER()\":{\"notice\":\"The role that allows attesters to submit commitments\"},\"acceptGenesisCeremony()\":{\"notice\":\"Accepts the genesis ceremony.\"},\"getAcceptingEpoch()\":{\"notice\":\"get the accepting epoch\"},\"getAttesterRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for an attester in a given epoch\"},\"getAttesterStake(uint256,address)\":{\"notice\":\"Gets the stake for a given attester at a given epoch\"},\"getAttesterStakeForAcceptingEpoch(address)\":{\"notice\":\"Gets the stake for a given attester at the accepting epoch\"},\"getCommitmentByAttester(uint256,address)\":{\"notice\":\"Gets the commitment submitted by an attester for a given height\"},\"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))\":{\"notice\":\"get the timestamp when a commitment was first seen\"},\"getCustodianStake(uint256,address)\":{\"notice\":\"Gets the stake for a given custodian for a given epoch\"},\"getEpochDuration()\":{\"notice\":\"Gets the epoch duration\"},\"getEpochStartTime()\":{\"notice\":\"Gets the time at which the current epoch started\"},\"getLastPostconfirmedSuperBlockHeight()\":{\"notice\":\"Gets the height of the last postconfirmed superblock\"},\"getPostconfirmedCommitment(uint256)\":{\"notice\":\"get the postconfirmed commitment for a given height\"},\"getPostconfirmer()\":{\"notice\":\"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness\"},\"getPostconfirmerDuration()\":{\"notice\":\"Gets the postconfirmer duration\"},\"getPostconfirmerPrivilegeDuration()\":{\"notice\":\"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"getPostconfirmerRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for a postconfirmer in a given epoch\"},\"getPostconfirmerStartTime()\":{\"notice\":\"Gets the time at which the current postconfirmer's term started\"},\"getPresentEpoch()\":{\"notice\":\"get the present epoch\"},\"getStake(uint256,address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at a given epoch\"},\"getStakeForAcceptingEpoch(address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at the accepting epoch\"},\"getStakedAttestersForAcceptingEpoch()\":{\"notice\":\"Gets the attesters who have stake in the current accepting epoch\"},\"getSuperBlockHeightAssignedEpoch(uint256)\":{\"notice\":\"Gets the epoch assigned to a superblock height\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"notice\":\"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window\"},\"minCommitmentAgeForPostconfirmation()\":{\"notice\":\"Minimum time that must pass before a commitment can be postconfirmed\"},\"postconfirmSuperBlocksAndRollover()\":{\"notice\":\"postconfirm superblocks and rollover\"},\"postconfirmerDuration()\":{\"notice\":\"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period.\"},\"postconfirmerPrivilegeDuration()\":{\"notice\":\"Max time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"setAcceptingEpoch(uint256)\":{\"notice\":\"Sets the accepting epoch to a new value (must be higher than current)\"},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"notice\":\"Sets the minimum time that must pass before a commitment can be postconfirmed\"},\"setPostconfirmerDuration(uint256)\":{\"notice\":\"Sets the postconfirmer term duration, must be less than epoch duration\"},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"notice\":\"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/settlement/PCP.sol\":\"PCP\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/settlement/PCP.sol\":{\"keccak256\":\"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b\",\"dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp\"]},\"src/settlement/PCPStorage.sol\":{\"keccak256\":\"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff\",\"dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss\"]},\"src/settlement/interfaces/IPCP.sol\":{\"keccak256\":\"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f\",\"dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg\"]},\"src/settlement/settlement/BaseSettlement.sol\":{\"keccak256\":\"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e\",\"dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AttesterAlreadyCommitted"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLong"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLongForEpoch"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnacceptableSuperBlockCommitment"},{"inputs":[],"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong"},{"inputs":[],"type":"error","name":"postconfirmerPrivilegeDurationTooLong"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"attesterStake","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockCommitmentSubmitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"height","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockPostconfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMITMENT_ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TRUSTED_ATTESTER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"attesterRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantCommitmentAdmin"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantTrustedAttester"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitement","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentStake","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"commitments","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"createSuperBlockCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"forceLatestCommitment"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCommitmentByAttester","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"getCommitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxTolerableSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPostconfirmedCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"getPostconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPresentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSuperBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTotalStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCommitmentAdmin"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantTrustedAttester"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IMovementStaking","name":"_stakingContract","type":"address"},{"internalType":"uint256","name":"_lastPostconfirmedSuperBlockHeight","type":"uint256"},{"internalType":"uint256","name":"_leadingSuperBlockTolerance","type":"uint256"},{"internalType":"uint256","name":"_epochDuration","type":"uint256"},{"internalType":"address[]","name":"_custodians","type":"address[]"},{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"},{"internalType":"address","name":"_moveTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isCommitted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isPostconfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"isWithinPostconfirmerPrivilegeDuration","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leadingSuperBlockTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"moveTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"openAttestationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"postconfirmSuperBlocksAndRollover"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeight","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockTimestamp","outputs":[{"internalType":"uint256","name":"L1BlockTimestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedBy","outputs":[{"internalType":"address","name":"attester","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedByPostconfirmer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocksVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"postconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerAttestationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerPostconfirmationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"uint256","name":"_minCommitmentAgeForPostconfirmation","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMinCommitmentAgeForPostconfirmation"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOpenAttestationEnabled"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmedCommitmentAtBlockHeight"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerDuration"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerPrivilegeDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerPrivilegeDuration"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerAttestationPoint"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerPostconfirmationPoint"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingContract","outputs":[{"internalType":"contract IMovementStaking","name":"","type":"address"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment[]","name":"superBlockCommitments","type":"tuple[]","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitBatchSuperBlockCommitment"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitSuperBlockCommitment"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"superBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"versionedPostconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getPostconfirmerPrivilegeDuration()":{"returns":{"_0":"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"details":"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setAcceptingEpoch(uint256)":{"params":{"newEpoch":"The new accepting epoch value"}},"setMinCommitmentAgeForPostconfirmation(uint256)":{"params":{"_minCommitmentAgeForPostconfirmation":"New minimum commitment age "}},"setPostconfirmerDuration(uint256)":{"params":{"_postconfirmerDuration":"New postconfirmer term duration in time units"}},"setPostconfirmerPrivilegeDuration(uint256)":{"params":{"_postconfirmerPrivilegeDuration":"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"COMMITMENT_ADMIN()":{"notice":"The role that allows the commitment admin to set the accepting epoch"},"TRUSTED_ATTESTER()":{"notice":"The role that allows attesters to submit commitments"},"acceptGenesisCeremony()":{"notice":"Accepts the genesis ceremony."},"getAcceptingEpoch()":{"notice":"get the accepting epoch"},"getAttesterRewardPoints(uint256,address)":{"notice":"Gets the reward points for an attester in a given epoch"},"getAttesterStake(uint256,address)":{"notice":"Gets the stake for a given attester at a given epoch"},"getAttesterStakeForAcceptingEpoch(address)":{"notice":"Gets the stake for a given attester at the accepting epoch"},"getCommitmentByAttester(uint256,address)":{"notice":"Gets the commitment submitted by an attester for a given height"},"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":{"notice":"get the timestamp when a commitment was first seen"},"getCustodianStake(uint256,address)":{"notice":"Gets the stake for a given custodian for a given epoch"},"getEpochDuration()":{"notice":"Gets the epoch duration"},"getEpochStartTime()":{"notice":"Gets the time at which the current epoch started"},"getLastPostconfirmedSuperBlockHeight()":{"notice":"Gets the height of the last postconfirmed superblock"},"getPostconfirmedCommitment(uint256)":{"notice":"get the postconfirmed commitment for a given height"},"getPostconfirmer()":{"notice":"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness"},"getPostconfirmerDuration()":{"notice":"Gets the postconfirmer duration"},"getPostconfirmerPrivilegeDuration()":{"notice":"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"},"getPostconfirmerRewardPoints(uint256,address)":{"notice":"Gets the reward points for a postconfirmer in a given epoch"},"getPostconfirmerStartTime()":{"notice":"Gets the time at which the current postconfirmer's term started"},"getPresentEpoch()":{"notice":"get the present epoch"},"getStake(uint256,address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at a given epoch"},"getStakeForAcceptingEpoch(address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at the accepting epoch"},"getStakedAttestersForAcceptingEpoch()":{"notice":"Gets the attesters who have stake in the current accepting epoch"},"getSuperBlockHeightAssignedEpoch(uint256)":{"notice":"Gets the epoch assigned to a superblock height"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"notice":"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window"},"minCommitmentAgeForPostconfirmation()":{"notice":"Minimum time that must pass before a commitment can be postconfirmed"},"postconfirmSuperBlocksAndRollover()":{"notice":"postconfirm superblocks and rollover"},"postconfirmerDuration()":{"notice":"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period."},"postconfirmerPrivilegeDuration()":{"notice":"Max time the postconfirmer can be non-reactive to an honest superBlock commitment"},"setAcceptingEpoch(uint256)":{"notice":"Sets the accepting epoch to a new value (must be higher than current)"},"setMinCommitmentAgeForPostconfirmation(uint256)":{"notice":"Sets the minimum time that must pass before a commitment can be postconfirmed"},"setPostconfirmerDuration(uint256)":{"notice":"Sets the postconfirmer term duration, must be less than epoch duration"},"setPostconfirmerPrivilegeDuration(uint256)":{"notice":"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/settlement/PCP.sol":"PCP"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/settlement/PCP.sol":{"keccak256":"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714","urls":["bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b","dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp"],"license":"UNLICENSED"},"src/settlement/PCPStorage.sol":{"keccak256":"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1","urls":["bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff","dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss"],"license":"UNLICENSED"},"src/settlement/interfaces/IPCP.sol":{"keccak256":"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89","urls":["bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f","dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg"],"license":"UNLICENSED"},"src/settlement/settlement/BaseSettlement.sol":{"keccak256":"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a","urls":["bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e","dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":107} \ No newline at end of file +<<<<<<< HEAD +{"abi":[{"type":"function","name":"COMMITMENT_ADMIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TRUSTED_ATTESTER","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":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"attesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchGrantCommitmentAdmin","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchGrantTrustedAttester","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitmentFirstSeenAt","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitmentStake","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitement","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitments","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"createSuperBlockCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"pure"},{"type":"function","name":"forceLatestCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCommitmentByAttester","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getCommitmentFirstSeenAt","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxTolerableSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmedCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPresentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSuperBlockHeightAssignedEpoch","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"grantCommitmentAdmin","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantTrustedAttester","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_stakingContract","type":"address","internalType":"contract IMovementStaking"},{"name":"_lastPostconfirmedSuperBlockHeight","type":"uint256","internalType":"uint256"},{"name":"_leadingSuperBlockTolerance","type":"uint256","internalType":"uint256"},{"name":"_epochDuration","type":"uint256","internalType":"uint256"},{"name":"_custodians","type":"address[]","internalType":"address[]"},{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"},{"name":"_moveTokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isCommitted","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPostconfirmed","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithinPostconfirmerPrivilegeDuration","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"leadingSuperBlockTolerance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"moveTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"openAttestationEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmSuperBlocksAndRollover","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"postconfirmedAtL1BlockHeight","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockTimestamp","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockTimestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedBy","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"attester","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocks","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocksVersion","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardPerAttestationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rewardPerPostconfirmationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinCommitmentAgeForPostconfirmation","inputs":[{"name":"_minCommitmentAgeForPostconfirmation","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOpenAttestationEnabled","inputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmedCommitmentAtBlockHeight","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerDuration","inputs":[{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerPrivilegeDuration","inputs":[{"name":"_postconfirmerPrivilegeDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerAttestationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerPostconfirmationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakingContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMovementStaking"}],"stateMutability":"view"},{"type":"function","name":"submitBatchSuperBlockCommitment","inputs":[{"name":"superBlockCommitments","type":"tuple[]","internalType":"struct PCPStorage.SuperBlockCommitment[]","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitSuperBlockCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"superBlockHeightAssignedEpoch","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"versionedPostconfirmedSuperBlocks","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SuperBlockCommitmentSubmitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"attesterStake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SuperBlockPostconfirmed","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"height","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AttesterAlreadyCommitted","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLong","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLongForEpoch","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnacceptableSuperBlockCommitment","inputs":[]},{"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong","inputs":[]},{"type":"error","name":"postconfirmerPrivilegeDurationTooLong","inputs":[]}],"bytecode":{"object":"0x60a0604052306080523480156012575f80fd5b50608051613a806100395f395f81816125e30152818161260c015261274d0152613a805ff3fe6080604052600436106104b0575f3560e01c80636c713af81161026d578063bff92c8c1161014a578063e07472ef116100be578063ed8a1d5911610083578063ed8a1d591461102b578063eda67fc41461106c578063ee99205c146110a6578063ef9ae15c146110c4578063f1949add1461092e578063fdafe9ca146110dd575f80fd5b8063e07472ef14610f25578063e4a3fb7414610f5f578063e90d4c0614610f97578063ec18c18614610fdc578063ec23ec2e14610ff1575f80fd5b8063d283392e1161010f578063d283392e14610e52578063d3eef4cc14610e7d578063d440116d14610e92578063d547741f14610eb1578063d783068814610ed0578063da7d28b614610f06575f80fd5b8063bff92c8c14610daa578063c19b406c14610dbf578063cf6772ad14610df5578063d03509ec14610e14578063d2526fef14610e33575f80fd5b806391d14854116101e1578063a217fddf116101a6578063a217fddf14610ce7578063aa0d6fcd14610cfa578063ab208ebd14610d1b578063ad3cb1cc14610d2f578063ba26513e14610d6c578063bb04bd2f14610d8b575f80fd5b806391d1485414610c5657806392a2ebf314610c75578063943b79e214610c89578063949d7c2a14610c9d578063a207fe2f14610cbc575f80fd5b806380e460f01161023257806380e460f014610b905780638129fc1c14610bb057806381df174614610bc457806385e6b8c214610be357806390879f6414610c0e57806391807e4f14610c22575f80fd5b80636c713af814610ad15780636f86529414610ae55780637aa81c2a14610b1b5780637ac561c814610b3a5780637cfd820514610b65575f80fd5b806336568abe1161039b578063556d97c81161030f5780635d3ea8f1116102d45780635d3ea8f114610a145780635db916ab14610a285780635f4d642e14610a485780635f83c7d514610a5c578063622e361614610a715780636978ab1214610a90575f80fd5b8063556d97c81461092e57806355b8119d146109ad57806357342282146109c257806358376877146109e157806359b9959714610a00575f80fd5b806345367f231161036057806345367f2314610895578063491d0467146108b45780634b47d955146108d35780634ceb2e66146108f25780634f1ef2861461090757806352d1902d1461091a575f80fd5b806336568abe146107cf5780633752d675146107ee57806337d7f58f146108025780633ba18005146108165780633d64592714610876575f80fd5b80631241ebe311610432578063248a9ca3116103f7578063248a9ca3146106c357806326624e37146106e25780632bfd11d6146106f65780632f2ff15d146107655780633119edd41461078457806335ea1c63146107a3575f80fd5b80631241ebe31461062757806314e380261461063b5780631db859c71461064f5780631de38fe1146106855780631f83e2a3146106a4575f80fd5b806308c7050f1161047857806308c7050f1461058a5780630cf6b6bd146105ab5780630d39f7f0146105ca5780630e74b609146105e9578063107e21ca14610608575f80fd5b806301ffc9a7146104b4578063026583d7146104e8578063028e490a1461052957806303d3f7fd1461054757806308750a321461055c575b5f80fd5b3480156104bf575f80fd5b506104d36104ce366004613286565b6110f2565b60405190151581526020015b60405180910390f35b3480156104f3575f80fd5b506105076105023660046132ad565b611128565b60408051825181526020808401519082015291810151908201526060016104df565b348015610534575f80fd5b506006545b6040519081526020016104df565b348015610552575f80fd5b5061053960025481565b348015610567575f80fd5b506104d36105763660046132d6565b600c6020525f908152604090205460ff1681565b348015610595575f80fd5b506105a96105a4366004613387565b611161565b005b3480156105b6575f80fd5b506104d36105c5366004613387565b6111ee565b3480156105d5575f80fd5b506105a96105e43660046132d6565b61126d565b3480156105f4575f80fd5b506105a9610603366004613387565b61128a565b348015610613575f80fd5b506105a961062236600461344a565b6112d3565b348015610632575f80fd5b50600454610539565b348015610646575f80fd5b506105396114b3565b34801561065a575f80fd5b506105396106693660046134ce565b601560209081525f928352604080842090915290825290205481565b348015610690575f80fd5b5061053961069f3660046134ce565b6114c4565b3480156106af575f80fd5b506105a96106be3660046132d6565b61153d565b3480156106ce575f80fd5b506105396106dd3660046132d6565b6115ef565b3480156106ed575f80fd5b506105a961160f565b348015610701575f80fd5b506105076107103660046132d6565b60408051606080820183525f8083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b348015610770575f80fd5b506105a961077f3660046134ce565b61161a565b34801561078f575f80fd5b506105a961079e366004613387565b61163c565b3480156107ae575f80fd5b506107b7611708565b6040516001600160a01b0390911681526020016104df565b3480156107da575f80fd5b506105a96107e93660046134ce565b611807565b3480156107f9575f80fd5b5061053961183f565b34801561080d575f80fd5b506105396118aa565b348015610821575f80fd5b5061085b6108303660046134fc565b601260209081525f928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104df565b348015610881575f80fd5b506105a96108903660046132d6565b6118da565b3480156108a0575f80fd5b506105396108af3660046132d6565b61198e565b3480156108bf575f80fd5b506105396108ce36600461351c565b611a47565b3480156108de575f80fd5b506105a96108ed366004613537565b611a59565b3480156108fd575f80fd5b5061053960045481565b6105a9610915366004613568565b611ac6565b348015610925575f80fd5b50610539611ae1565b348015610939575f80fd5b506105076109483660046134ce565b604080516060810182525f8082526020820181905291810191909152505f9182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109b8575f80fd5b5061053960065481565b3480156109cd575f80fd5b506105a96109dc3660046132d6565b611afc565b3480156109ec575f80fd5b506001546107b7906001600160a01b031681565b348015610a0b575f80fd5b50600354610539565b348015610a1f575f80fd5b50610539611b19565b348015610a33575f80fd5b506105395f80516020613a2b83398151915281565b348015610a53575f80fd5b50610539611b49565b348015610a67575f80fd5b5061053960165481565b348015610a7c575f80fd5b506105a9610a8b36600461360d565b611be2565b348015610a9b575f80fd5b50610539610aaa3660046134ce565b5f9182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610adc575f80fd5b50610539611c57565b348015610af0575f80fd5b50610539610aff3660046134ce565b601460209081525f928352604080842090915290825290205481565b348015610b26575f80fd5b50610539610b353660046136a7565b611c87565b348015610b45575f80fd5b50610539610b543660046132d6565b600d6020525f908152604090205481565b348015610b70575f80fd5b50610539610b7f3660046132d6565b600f6020525f908152604090205481565b348015610b9b575f80fd5b506105395f805160206139cb83398151915281565b348015610bbb575f80fd5b506105a9611d10565b348015610bcf575f80fd5b506105a9610bde36600461351c565b611e1a565b348015610bee575f80fd5b50610539610bfd3660046132d6565b60076020525f908152604090205481565b348015610c19575f80fd5b50610539611e48565b348015610c2d575f80fd5b506107b7610c3c3660046132d6565b600b6020525f90815260409020546001600160a01b031681565b348015610c61575f80fd5b506104d3610c703660046134ce565b611ecc565b348015610c80575f80fd5b506105a9611f02565b348015610c94575f80fd5b50610539611fb7565b348015610ca8575f80fd5b506105a9610cb736600461351c565b611fc8565b348015610cc7575f80fd5b50610539610cd63660046132d6565b600e6020525f908152604090205481565b348015610cf2575f80fd5b506105395f81565b348015610d05575f80fd5b50610d0e612005565b6040516104df9190613729565b348015610d26575f80fd5b50600554610539565b348015610d3a575f80fd5b50610d5f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104df919061373b565b348015610d77575f80fd5b50610539610d863660046134ce565b612071565b348015610d96575f80fd5b50610539610da5366004613770565b61212c565b348015610db5575f80fd5b5061053960055481565b348015610dca575f80fd5b50610539610dd93660046134fc565b600960209081525f928352604080842090915290825290205481565b348015610e00575f80fd5b506105a9610e0f366004613537565b61213f565b348015610e1f575f80fd5b506105a9610e2e3660046132d6565b61218c565b348015610e3e575f80fd5b506105a9610e4d36600461379c565b612205565b348015610e5d575f80fd5b50610539610e6c3660046132d6565b5f9081526007602052604090205490565b348015610e88575f80fd5b5061053960175481565b348015610e9d575f80fd5b50610539610eac36600461351c565b612230565b348015610ebc575f80fd5b506105a9610ecb3660046134ce565b612242565b348015610edb575f80fd5b50610539610eea3660046134fc565b600a60209081525f928352604080842090915290825290205481565b348015610f11575f80fd5b506105a9610f203660046132d6565b61225e565b348015610f30575f80fd5b50610539610f3f366004613387565b80515f908152600a60209081526040808320938201518352929052205490565b348015610f6a575f80fd5b506104d3610f793660046132d6565b5f908152600860209081526040808320338452909152902054151590565b348015610fa2575f80fd5b5061085b610fb13660046134ce565b600860209081525f928352604080842090915290825290208054600182015460029092015490919083565b348015610fe7575f80fd5b5061053960135481565b348015610ffc575f80fd5b506104d361100b3660046132d6565b6013545f9081526012602090815260408083209383529290522054151590565b348015611036575f80fd5b506105396110453660046134ce565b5f9182526015602090815260408084206001600160a01b0393909316845291905290205490565b348015611077575f80fd5b5061085b6110863660046132d6565b60106020525f908152604090208054600182015460029092015490919083565b3480156110b1575f80fd5b505f546107b7906001600160a01b031681565b3480156110cf575f80fd5b506011546104d39060ff1681565b3480156110e8575f80fd5b5061053960035481565b5f6001600160e01b03198216637965db0b60e01b148061112257506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183525f808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111785f805160206139cb83398151915233611ecc565b6111e25760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b6111eb8161163c565b50565b80515f908152600a602090815260408083208285015184529091528120545f0361121957505f919050565b4261122360065490565b60055484515f908152600a6020908152604080832082890151845290915290205461124e91906137cf565b61125891906137cf565b101561126557505f919050565b506001919050565b5f805160206139cb83398151915261128481612310565b50601655565b60115460ff16806112ad57506112ad5f80516020613a2b83398151915233611ecc565b6112c95760405162461bcd60e51b81526004016111d9906137e2565b6111eb338261231a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156113175750825b90505f826001600160401b031660011480156113325750303b155b905081158015611340575080155b1561135e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561138857845460ff60401b1916600160401b1785555b61139061248e565b5f80546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f8906113da908c908c90600401613824565b5f604051808303815f87803b1580156113f1575f80fd5b505af1158015611403573d5f803e3d5ffd5b5050505061141033611fc8565b61141933611e1a565b6004879055600180546001600160a01b0319166001600160a01b038816179055611444600a8a613850565b600555611452600a8a613850565b6006556001601681905560175583156114a557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f6114bf6108af611c57565b905090565b5f8054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa158015611519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115a9190613863565b5f805160206139cb83398151915261155481612310565b6006545f54604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa15801561159c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c09190613863565b6115ca919061387a565b82106115e95760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b5f9081525f80516020613a0b833981519152602052604090206001015490565b611618336124a0565b565b611623826115ef565b61162c81612310565b61163683836124be565b50505050565b6116535f805160206139cb83398151915233611ecc565b6116d35760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a4016111d9565b6013545f9081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b5f80611712611b49565b90505f61171d611e48565b5f8054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a479906024015f60405180830381865afa158015611767573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261178e919081019061388d565b905080515f036117a1575f935050505090565b5f815184846040516020016117c0929190918252602082015260400190565b604051602081830303815290604052805190602001205f1c6117e2919061391c565b90508181815181106117f6576117f661392f565b602002602001015194505050505090565b6001600160a01b03811633146118305760405163334bd91960e11b815260040160405180910390fd5b61183a828261255f565b505050565b5f8054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611886573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114bf9190613863565b5f805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d9060240161186b565b5f805160206139cb8339815191526118f181612310565b5f8054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611937573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195b9190613863565b905080611969846002613943565b10611987576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b5f805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef5906024015f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061388d565b90505f805b8251811015611a3f57611a2b85848381518110611a1e57611a1e61392f565b60200260200101516114c4565b611a3590836137cf565b91506001016119ff565b509392505050565b5f611122611a53611c57565b83612071565b611a635f33611ecc565b611a7f5760405162461bcd60e51b81526004016111d99061395a565b5f5b8151811015611ac257611aba5f805160206139cb833981519152838381518110611aad57611aad61392f565b602002602001015161161a565b600101611a81565b5050565b611ace6125d8565b611ad78261267c565b611ac28282612686565b5f611aea612742565b505f805160206139eb83398151915290565b5f805160206139cb833981519152611b1381612310565b50601755565b5f8054604051635c53435960e01b81523060048201526001600160a01b0390911690635c5343599060240161186b565b5f8054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611b93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb79190613863565b611bc1908361391c565b905060045481611bd1919061391c565b611bdb908261387a565b9250505090565b60115460ff1680611c055750611c055f80516020613a2b83398151915233611ecc565b611c215760405162461bcd60e51b81526004016111d9906137e2565b5f5b8151811015611ac257611c4f33838381518110611c4257611c4261392f565b602002602001015161231a565b600101611c23565b5f80546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb759060240161186b565b5f80546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611ce4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d089190613863565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611d545750825b90505f826001600160401b03166001148015611d6f5750303b155b905081158015611d7d575080155b15611d9b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611dc557845460ff60401b1916600160401b1785555b611dcd61278b565b8315611e1357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f805160206139cb833981519152611e3181612310565b611ac25f80516020613a2b8339815191528361161a565b5f8054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb29190613863565b611ebc908261391c565b611ec6908261387a565b91505090565b5f9182525f80516020613a0b833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611f0c5f33611ecc565b611f665760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b60648201526084016111d9565b5f8054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b158015611fa5575f80fd5b505af1158015611636573d5f803e3d5ffd5b5f6002546003546114bf91906137cf565b611fd25f33611ecc565b611fee5760405162461bcd60e51b81526004016111d99061395a565b6111eb5f805160206139cb8339815191528261161a565b5f54604051634234a47960e01b81523060048201526060916001600160a01b031690634234a479906024015f60405180830381865afa15801561204a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114bf919081019061388d565b5f805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef5906024015f60405180830381865afa1580156120b6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120dd919081019061388d565b90505f805b82518110156121235761210f868483815181106121015761210161392f565b602002602001015187611c87565b61211990836137cf565b91506001016120e2565b50949350505050565b5f61115a612138611c57565b8484611c87565b5f805160206139cb83398151915261215681612310565b5f5b825181101561183a576121845f80516020613a2b833981519152848381518110611aad57611aad61392f565b600101612158565b5f805160206139cb8339815191526121a381612310565b5f54604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b949906044015f604051808303815f87803b1580156121eb575f80fd5b505af11580156121fd573d5f803e3d5ffd5b505050505050565b5f805160206139cb83398151915261221c81612310565b506011805460ff1916911515919091179055565b5f61112261223c611c57565b836114c4565b61224b826115ef565b61225481612310565b611636838361255f565b5f805160206139cb83398151915261227581612310565b6005545f54604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156122bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e19190613863565b6122eb919061387a565b821061230a57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b6111eb813361279b565b80515f9081526008602090815260408083206001600160a01b03861684529091529020541561235c57604051630ae09ad960e41b815260040160405180910390fd5b805160025460035461236e91906137cf565b101561238d57604051630ae09ad960e41b815260040160405180910390fd5b80515f9081526007602052604081205490036123bc576123ab6118aa565b81515f908152600760205260409020555b80515f9081526008602090815260408083206001600160a01b0386168452825291829020835180825591840151600182018190559284015160029091015561240491426127d4565b5f61240e83611a47565b82515f9081526009602090815260408083208287015184529091528120805492935083929091906124409084906137cf565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b61249661281e565b6111eb5f336124be565b6124b760035460016124b291906137cf565b612867565b6124a05750565b5f5f80516020613a0b8339815191526124d78484611ecc565b612556575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561250c3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611122565b5f915050611122565b5f5f80516020613a0b8339815191526125788484611ecc565b15612556575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050611122565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061265e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126525f805160206139eb833981519152546001600160a01b031690565b6001600160a01b031614155b156116185760405163703e46dd60e11b815260040160405180910390fd5b5f611ac281612310565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156126e0575060408051601f3d908101601f191682019092526126dd91810190613863565b60015b61270857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016111d9565b5f805160206139eb833981519152811461273857604051632a87526960e21b8152600481018290526024016111d9565b61183a8383612ad0565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116185760405163703e46dd60e11b815260040160405180910390fd5b61279361281e565b61161861248e565b6127a58282611ecc565b611ac25760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016111d9565b5f838152600a60209081526040808320858452909152902054156127f757505050565b805f0361280357505050565b5f928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661161857604051631afcd79f60e31b815260040160405180910390fd5b5f8181526007602052604081205460035415612933575f60078161288c60018761387a565b81526020019081526020015f2054905080821015612931575f6128ad612005565b90505f5b815181101561292b5760085f8781526020019081526020015f205f8383815181106128de576128de61392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f01545f14612923575f86815260076020526040902083905561292b565b6001016128b1565b50819250505b505b8061293c611c57565b101561294f5761294a612b25565b612933565b5f600361295b8361198e565b612966906002613943565b6129709190613850565b61297b9060016137cf565b90505f612986612005565b90505f805b8251811015612a90575f8382815181106129a7576129a761392f565b6020908102919091018101515f8a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612a09575050612a88565b80515f908152600960209081526040808320828501518452909152902054868110612a845781515f908152600a60209081526040808320828601518452909152902054600554612a5990826137cf565b421015612a695750505050612a90565b612a738333612e65565b5060019a9950505050505050505050565b5050505b60010161298b565b5080158015612aac5750612aa2611c57565b612aaa6118aa565b115b15612ac557612ab9612b25565b50600195945050505050565b505f95945050505050565b612ad98261310d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612b1d5761183a8282613170565b611ac26131e2565b5f612b2e611c57565b90505f612b39612005565b90505f5b8151811015612e25575f83815260146020526040812083518290859085908110612b6957612b6961392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20541115612cb8575f612bba838381518110612bad57612bad61392f565b6020026020010151611a47565b60165460145f8781526020019081526020015f205f868681518110612be157612be161392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054612c139190613943565b612c1d9190613943565b5f5484519192506001600160a01b031690635e00bf4690859085908110612c4657612c4661392f565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101869052911660448201526064015f604051808303815f87803b158015612ca0575f80fd5b505af1158015612cb2573d5f803e3d5ffd5b50505050505b5f83815260156020526040812083518290859085908110612cdb57612cdb61392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20541115612e1d575f612d1f838381518110612bad57612bad61392f565b60175460155f8781526020019081526020015f205f868681518110612d4657612d4661392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054612d789190613943565b612d829190613943565b5f5484519192506001600160a01b031690635e00bf4690859085908110612dab57612dab61392f565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101869052911660448201526064015f604051808303815f87803b158015612e05575f80fd5b505af1158015612e17573d5f803e3d5ffd5b50505050505b600101612b3d565b505f805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156121eb575f80fd5b5f612e6e611c57565b83515f908152600760205260409020549091508114612ea057604051631f2d18b160e31b815260040160405180910390fd5b8251612eae9060019061387a565b60035414612ecf57604051631f2d18b160e31b815260040160405180910390fd5b5f612ed8612005565b90505f5b8151811015612faa57846020015160085f875f015181526020019081526020015f205f848481518110612f1157612f1161392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206001015403612fa25760145f8481526020019081526020015f205f838381518110612f6557612f6561392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f815480929190612f9c9061399c565b91905055505b600101612edc565b50612fb4846111ee565b612ff5575f8281526015602090815260408083206001600160a01b03871684529091528120805460019290612fea9084906137cf565b9091555061304d9050565b826001600160a01b0316613007611708565b6001600160a01b03160361304d575f8281526015602090815260408083206001600160a01b038716845290915281208054600192906130479084906137cf565b90915550505b6013545f90815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b5f0361314257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016111d9565b5f805160206139eb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b03168460405161318c91906139b4565b5f60405180830381855af49150503d805f81146131c4576040519150601f19603f3d011682016040523d82523d5f602084013e6131c9565b606091505b50915091506131d9858383613201565b95945050505050565b34156116185760405163b398979f60e01b815260040160405180910390fd5b606082613216576132118261325d565b61115a565b815115801561322d57506001600160a01b0384163b155b1561325657604051639996b31560e01b81526001600160a01b03851660048201526024016111d9565b508061115a565b80511561326d5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215613296575f80fd5b81356001600160e01b03198116811461115a575f80fd5b5f805f606084860312156132bf575f80fd5b505081359360208301359350604090920135919050565b5f602082840312156132e6575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613329576133296132ed565b604052919050565b5f60608284031215613341575f80fd5b604051606081016001600160401b0381118282101715613363576133636132ed565b60409081528335825260208085013590830152928301359281019290925250919050565b5f60608284031215613397575f80fd5b61115a8383613331565b6001600160a01b03811681146111eb575f80fd5b5f6001600160401b038211156133cd576133cd6132ed565b5060051b60200190565b5f82601f8301126133e6575f80fd5b81356133f96133f4826133b5565b613301565b8082825260208201915060208360051b86010192508583111561341a575f80fd5b602085015b83811015613440578035613432816133a1565b83526020928301920161341f565b5095945050505050565b5f805f805f805f60e0888a031215613460575f80fd5b873561346b816133a1565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561349a575f80fd5b6134a68a828b016133d7565b93505060a0880135915060c08801356134be816133a1565b8091505092959891949750929550565b5f80604083850312156134df575f80fd5b8235915060208301356134f1816133a1565b809150509250929050565b5f806040838503121561350d575f80fd5b50508035926020909101359150565b5f6020828403121561352c575f80fd5b813561115a816133a1565b5f60208284031215613547575f80fd5b81356001600160401b0381111561355c575f80fd5b611d08848285016133d7565b5f8060408385031215613579575f80fd5b8235613584816133a1565b915060208301356001600160401b0381111561359e575f80fd5b8301601f810185136135ae575f80fd5b80356001600160401b038111156135c7576135c76132ed565b6135da601f8201601f1916602001613301565b8181528660208385010111156135ee575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f6020828403121561361d575f80fd5b81356001600160401b03811115613632575f80fd5b8201601f81018413613642575f80fd5b80356136506133f4826133b5565b80828252602082019150602060608402850101925086831115613671575f80fd5b6020840193505b8284101561369d5761368a8785613331565b8252602082019150606084019350613678565b9695505050505050565b5f805f606084860312156136b9575f80fd5b8335925060208401356136cb816133a1565b915060408401356136db816133a1565b809150509250925092565b5f8151808452602084019350602083015f5b8281101561371f5781516001600160a01b03168652602095860195909101906001016136f8565b5093949350505050565b602081525f61115a60208301846136e6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215613781575f80fd5b823561378c816133a1565b915060208301356134f1816133a1565b5f602082840312156137ac575f80fd5b8135801515811461115a575f80fd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611122576111226137bb565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201525f611d0860408301846136e6565b634e487b7160e01b5f52601260045260245ffd5b5f8261385e5761385e61383c565b500490565b5f60208284031215613873575f80fd5b5051919050565b81810381811115611122576111226137bb565b5f6020828403121561389d575f80fd5b81516001600160401b038111156138b2575f80fd5b8201601f810184136138c2575f80fd5b80516138d06133f4826133b5565b8082825260208201915060208360051b8501019250868311156138f1575f80fd5b6020840193505b8284101561369d57835161390b816133a1565b8252602093840193909101906138f8565b5f8261392a5761392a61383c565b500690565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417611122576111226137bb565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b5f600182016139ad576139ad6137bb565b5060010190565b5f82518060208501845e5f92019182525091905056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a264697066735822122001bfe86d56e4a897606f8d5f368223ea57ef6cdc9d172f2374ca3da77409609d64736f6c634300081a0033","sourceMap":"545:34560:110:-:0;;;1171:4:21;1128:48;;545:34560:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106104b0575f3560e01c80636c713af81161026d578063bff92c8c1161014a578063e07472ef116100be578063ed8a1d5911610083578063ed8a1d591461102b578063eda67fc41461106c578063ee99205c146110a6578063ef9ae15c146110c4578063f1949add1461092e578063fdafe9ca146110dd575f80fd5b8063e07472ef14610f25578063e4a3fb7414610f5f578063e90d4c0614610f97578063ec18c18614610fdc578063ec23ec2e14610ff1575f80fd5b8063d283392e1161010f578063d283392e14610e52578063d3eef4cc14610e7d578063d440116d14610e92578063d547741f14610eb1578063d783068814610ed0578063da7d28b614610f06575f80fd5b8063bff92c8c14610daa578063c19b406c14610dbf578063cf6772ad14610df5578063d03509ec14610e14578063d2526fef14610e33575f80fd5b806391d14854116101e1578063a217fddf116101a6578063a217fddf14610ce7578063aa0d6fcd14610cfa578063ab208ebd14610d1b578063ad3cb1cc14610d2f578063ba26513e14610d6c578063bb04bd2f14610d8b575f80fd5b806391d1485414610c5657806392a2ebf314610c75578063943b79e214610c89578063949d7c2a14610c9d578063a207fe2f14610cbc575f80fd5b806380e460f01161023257806380e460f014610b905780638129fc1c14610bb057806381df174614610bc457806385e6b8c214610be357806390879f6414610c0e57806391807e4f14610c22575f80fd5b80636c713af814610ad15780636f86529414610ae55780637aa81c2a14610b1b5780637ac561c814610b3a5780637cfd820514610b65575f80fd5b806336568abe1161039b578063556d97c81161030f5780635d3ea8f1116102d45780635d3ea8f114610a145780635db916ab14610a285780635f4d642e14610a485780635f83c7d514610a5c578063622e361614610a715780636978ab1214610a90575f80fd5b8063556d97c81461092e57806355b8119d146109ad57806357342282146109c257806358376877146109e157806359b9959714610a00575f80fd5b806345367f231161036057806345367f2314610895578063491d0467146108b45780634b47d955146108d35780634ceb2e66146108f25780634f1ef2861461090757806352d1902d1461091a575f80fd5b806336568abe146107cf5780633752d675146107ee57806337d7f58f146108025780633ba18005146108165780633d64592714610876575f80fd5b80631241ebe311610432578063248a9ca3116103f7578063248a9ca3146106c357806326624e37146106e25780632bfd11d6146106f65780632f2ff15d146107655780633119edd41461078457806335ea1c63146107a3575f80fd5b80631241ebe31461062757806314e380261461063b5780631db859c71461064f5780631de38fe1146106855780631f83e2a3146106a4575f80fd5b806308c7050f1161047857806308c7050f1461058a5780630cf6b6bd146105ab5780630d39f7f0146105ca5780630e74b609146105e9578063107e21ca14610608575f80fd5b806301ffc9a7146104b4578063026583d7146104e8578063028e490a1461052957806303d3f7fd1461054757806308750a321461055c575b5f80fd5b3480156104bf575f80fd5b506104d36104ce366004613286565b6110f2565b60405190151581526020015b60405180910390f35b3480156104f3575f80fd5b506105076105023660046132ad565b611128565b60408051825181526020808401519082015291810151908201526060016104df565b348015610534575f80fd5b506006545b6040519081526020016104df565b348015610552575f80fd5b5061053960025481565b348015610567575f80fd5b506104d36105763660046132d6565b600c6020525f908152604090205460ff1681565b348015610595575f80fd5b506105a96105a4366004613387565b611161565b005b3480156105b6575f80fd5b506104d36105c5366004613387565b6111ee565b3480156105d5575f80fd5b506105a96105e43660046132d6565b61126d565b3480156105f4575f80fd5b506105a9610603366004613387565b61128a565b348015610613575f80fd5b506105a961062236600461344a565b6112d3565b348015610632575f80fd5b50600454610539565b348015610646575f80fd5b506105396114b3565b34801561065a575f80fd5b506105396106693660046134ce565b601560209081525f928352604080842090915290825290205481565b348015610690575f80fd5b5061053961069f3660046134ce565b6114c4565b3480156106af575f80fd5b506105a96106be3660046132d6565b61153d565b3480156106ce575f80fd5b506105396106dd3660046132d6565b6115ef565b3480156106ed575f80fd5b506105a961160f565b348015610701575f80fd5b506105076107103660046132d6565b60408051606080820183525f8083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b348015610770575f80fd5b506105a961077f3660046134ce565b61161a565b34801561078f575f80fd5b506105a961079e366004613387565b61163c565b3480156107ae575f80fd5b506107b7611708565b6040516001600160a01b0390911681526020016104df565b3480156107da575f80fd5b506105a96107e93660046134ce565b611807565b3480156107f9575f80fd5b5061053961183f565b34801561080d575f80fd5b506105396118aa565b348015610821575f80fd5b5061085b6108303660046134fc565b601260209081525f928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104df565b348015610881575f80fd5b506105a96108903660046132d6565b6118da565b3480156108a0575f80fd5b506105396108af3660046132d6565b61198e565b3480156108bf575f80fd5b506105396108ce36600461351c565b611a47565b3480156108de575f80fd5b506105a96108ed366004613537565b611a59565b3480156108fd575f80fd5b5061053960045481565b6105a9610915366004613568565b611ac6565b348015610925575f80fd5b50610539611ae1565b348015610939575f80fd5b506105076109483660046134ce565b604080516060810182525f8082526020820181905291810191909152505f9182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109b8575f80fd5b5061053960065481565b3480156109cd575f80fd5b506105a96109dc3660046132d6565b611afc565b3480156109ec575f80fd5b506001546107b7906001600160a01b031681565b348015610a0b575f80fd5b50600354610539565b348015610a1f575f80fd5b50610539611b19565b348015610a33575f80fd5b506105395f80516020613a2b83398151915281565b348015610a53575f80fd5b50610539611b49565b348015610a67575f80fd5b5061053960165481565b348015610a7c575f80fd5b506105a9610a8b36600461360d565b611be2565b348015610a9b575f80fd5b50610539610aaa3660046134ce565b5f9182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610adc575f80fd5b50610539611c57565b348015610af0575f80fd5b50610539610aff3660046134ce565b601460209081525f928352604080842090915290825290205481565b348015610b26575f80fd5b50610539610b353660046136a7565b611c87565b348015610b45575f80fd5b50610539610b543660046132d6565b600d6020525f908152604090205481565b348015610b70575f80fd5b50610539610b7f3660046132d6565b600f6020525f908152604090205481565b348015610b9b575f80fd5b506105395f805160206139cb83398151915281565b348015610bbb575f80fd5b506105a9611d10565b348015610bcf575f80fd5b506105a9610bde36600461351c565b611e1a565b348015610bee575f80fd5b50610539610bfd3660046132d6565b60076020525f908152604090205481565b348015610c19575f80fd5b50610539611e48565b348015610c2d575f80fd5b506107b7610c3c3660046132d6565b600b6020525f90815260409020546001600160a01b031681565b348015610c61575f80fd5b506104d3610c703660046134ce565b611ecc565b348015610c80575f80fd5b506105a9611f02565b348015610c94575f80fd5b50610539611fb7565b348015610ca8575f80fd5b506105a9610cb736600461351c565b611fc8565b348015610cc7575f80fd5b50610539610cd63660046132d6565b600e6020525f908152604090205481565b348015610cf2575f80fd5b506105395f81565b348015610d05575f80fd5b50610d0e612005565b6040516104df9190613729565b348015610d26575f80fd5b50600554610539565b348015610d3a575f80fd5b50610d5f604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104df919061373b565b348015610d77575f80fd5b50610539610d863660046134ce565b612071565b348015610d96575f80fd5b50610539610da5366004613770565b61212c565b348015610db5575f80fd5b5061053960055481565b348015610dca575f80fd5b50610539610dd93660046134fc565b600960209081525f928352604080842090915290825290205481565b348015610e00575f80fd5b506105a9610e0f366004613537565b61213f565b348015610e1f575f80fd5b506105a9610e2e3660046132d6565b61218c565b348015610e3e575f80fd5b506105a9610e4d36600461379c565b612205565b348015610e5d575f80fd5b50610539610e6c3660046132d6565b5f9081526007602052604090205490565b348015610e88575f80fd5b5061053960175481565b348015610e9d575f80fd5b50610539610eac36600461351c565b612230565b348015610ebc575f80fd5b506105a9610ecb3660046134ce565b612242565b348015610edb575f80fd5b50610539610eea3660046134fc565b600a60209081525f928352604080842090915290825290205481565b348015610f11575f80fd5b506105a9610f203660046132d6565b61225e565b348015610f30575f80fd5b50610539610f3f366004613387565b80515f908152600a60209081526040808320938201518352929052205490565b348015610f6a575f80fd5b506104d3610f793660046132d6565b5f908152600860209081526040808320338452909152902054151590565b348015610fa2575f80fd5b5061085b610fb13660046134ce565b600860209081525f928352604080842090915290825290208054600182015460029092015490919083565b348015610fe7575f80fd5b5061053960135481565b348015610ffc575f80fd5b506104d361100b3660046132d6565b6013545f9081526012602090815260408083209383529290522054151590565b348015611036575f80fd5b506105396110453660046134ce565b5f9182526015602090815260408084206001600160a01b0393909316845291905290205490565b348015611077575f80fd5b5061085b6110863660046132d6565b60106020525f908152604090208054600182015460029092015490919083565b3480156110b1575f80fd5b505f546107b7906001600160a01b031681565b3480156110cf575f80fd5b506011546104d39060ff1681565b3480156110e8575f80fd5b5061053960035481565b5f6001600160e01b03198216637965db0b60e01b148061112257506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183525f808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111785f805160206139cb83398151915233611ecc565b6111e25760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b6111eb8161163c565b50565b80515f908152600a602090815260408083208285015184529091528120545f0361121957505f919050565b4261122360065490565b60055484515f908152600a6020908152604080832082890151845290915290205461124e91906137cf565b61125891906137cf565b101561126557505f919050565b506001919050565b5f805160206139cb83398151915261128481612310565b50601655565b60115460ff16806112ad57506112ad5f80516020613a2b83398151915233611ecc565b6112c95760405162461bcd60e51b81526004016111d9906137e2565b6111eb338261231a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156113175750825b90505f826001600160401b031660011480156113325750303b155b905081158015611340575080155b1561135e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561138857845460ff60401b1916600160401b1785555b61139061248e565b5f80546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f8906113da908c908c90600401613824565b5f604051808303815f87803b1580156113f1575f80fd5b505af1158015611403573d5f803e3d5ffd5b5050505061141033611fc8565b61141933611e1a565b6004879055600180546001600160a01b0319166001600160a01b038816179055611444600a8a613850565b600555611452600a8a613850565b6006556001601681905560175583156114a557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b5f6114bf6108af611c57565b905090565b5f8054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa158015611519573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061115a9190613863565b5f805160206139cb83398151915261155481612310565b6006545f54604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa15801561159c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115c09190613863565b6115ca919061387a565b82106115e95760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b5f9081525f80516020613a0b833981519152602052604090206001015490565b611618336124a0565b565b611623826115ef565b61162c81612310565b61163683836124be565b50505050565b6116535f805160206139cb83398151915233611ecc565b6116d35760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a4016111d9565b6013545f9081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b5f80611712611b49565b90505f61171d611e48565b5f8054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a479906024015f60405180830381865afa158015611767573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f1916820160405261178e919081019061388d565b905080515f036117a1575f935050505090565b5f815184846040516020016117c0929190918252602082015260400190565b604051602081830303815290604052805190602001205f1c6117e2919061391c565b90508181815181106117f6576117f661392f565b602002602001015194505050505090565b6001600160a01b03811633146118305760405163334bd91960e11b815260040160405180910390fd5b61183a828261255f565b505050565b5f8054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611886573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114bf9190613863565b5f805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d9060240161186b565b5f805160206139cb8339815191526118f181612310565b5f8054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611937573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061195b9190613863565b905080611969846002613943565b10611987576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b5f805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef5906024015f60405180830381865afa1580156119d3573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526119fa919081019061388d565b90505f805b8251811015611a3f57611a2b85848381518110611a1e57611a1e61392f565b60200260200101516114c4565b611a3590836137cf565b91506001016119ff565b509392505050565b5f611122611a53611c57565b83612071565b611a635f33611ecc565b611a7f5760405162461bcd60e51b81526004016111d99061395a565b5f5b8151811015611ac257611aba5f805160206139cb833981519152838381518110611aad57611aad61392f565b602002602001015161161a565b600101611a81565b5050565b611ace6125d8565b611ad78261267c565b611ac28282612686565b5f611aea612742565b505f805160206139eb83398151915290565b5f805160206139cb833981519152611b1381612310565b50601755565b5f8054604051635c53435960e01b81523060048201526001600160a01b0390911690635c5343599060240161186b565b5f8054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611b93573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bb79190613863565b611bc1908361391c565b905060045481611bd1919061391c565b611bdb908261387a565b9250505090565b60115460ff1680611c055750611c055f80516020613a2b83398151915233611ecc565b611c215760405162461bcd60e51b81526004016111d9906137e2565b5f5b8151811015611ac257611c4f33838381518110611c4257611c4261392f565b602002602001015161231a565b600101611c23565b5f80546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb759060240161186b565b5f80546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611ce4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d089190613863565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015611d545750825b90505f826001600160401b03166001148015611d6f5750303b155b905081158015611d7d575080155b15611d9b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611dc557845460ff60401b1916600160401b1785555b611dcd61278b565b8315611e1357845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b5f805160206139cb833981519152611e3181612310565b611ac25f80516020613a2b8339815191528361161a565b5f8054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611e8e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb29190613863565b611ebc908261391c565b611ec6908261387a565b91505090565b5f9182525f80516020613a0b833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611f0c5f33611ecc565b611f665760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b60648201526084016111d9565b5f8054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b158015611fa5575f80fd5b505af1158015611636573d5f803e3d5ffd5b5f6002546003546114bf91906137cf565b611fd25f33611ecc565b611fee5760405162461bcd60e51b81526004016111d99061395a565b6111eb5f805160206139cb8339815191528261161a565b5f54604051634234a47960e01b81523060048201526060916001600160a01b031690634234a479906024015f60405180830381865afa15801561204a573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526114bf919081019061388d565b5f805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef5906024015f60405180830381865afa1580156120b6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526120dd919081019061388d565b90505f805b82518110156121235761210f868483815181106121015761210161392f565b602002602001015187611c87565b61211990836137cf565b91506001016120e2565b50949350505050565b5f61115a612138611c57565b8484611c87565b5f805160206139cb83398151915261215681612310565b5f5b825181101561183a576121845f80516020613a2b833981519152848381518110611aad57611aad61392f565b600101612158565b5f805160206139cb8339815191526121a381612310565b5f54604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b949906044015f604051808303815f87803b1580156121eb575f80fd5b505af11580156121fd573d5f803e3d5ffd5b505050505050565b5f805160206139cb83398151915261221c81612310565b506011805460ff1916911515919091179055565b5f61112261223c611c57565b836114c4565b61224b826115ef565b61225481612310565b611636838361255f565b5f805160206139cb83398151915261227581612310565b6005545f54604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156122bd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e19190613863565b6122eb919061387a565b821061230a57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b6111eb813361279b565b80515f9081526008602090815260408083206001600160a01b03861684529091529020541561235c57604051630ae09ad960e41b815260040160405180910390fd5b805160025460035461236e91906137cf565b101561238d57604051630ae09ad960e41b815260040160405180910390fd5b80515f9081526007602052604081205490036123bc576123ab6118aa565b81515f908152600760205260409020555b80515f9081526008602090815260408083206001600160a01b0386168452825291829020835180825591840151600182018190559284015160029091015561240491426127d4565b5f61240e83611a47565b82515f9081526009602090815260408083208287015184529091528120805492935083929091906124409084906137cf565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b61249661281e565b6111eb5f336124be565b6124b760035460016124b291906137cf565b612867565b6124a05750565b5f5f80516020613a0b8339815191526124d78484611ecc565b612556575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561250c3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611122565b5f915050611122565b5f5f80516020613a0b8339815191526125788484611ecc565b15612556575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050611122565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061265e57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166126525f805160206139eb833981519152546001600160a01b031690565b6001600160a01b031614155b156116185760405163703e46dd60e11b815260040160405180910390fd5b5f611ac281612310565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156126e0575060408051601f3d908101601f191682019092526126dd91810190613863565b60015b61270857604051634c9c8ce360e01b81526001600160a01b03831660048201526024016111d9565b5f805160206139eb833981519152811461273857604051632a87526960e21b8152600481018290526024016111d9565b61183a8383612ad0565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116185760405163703e46dd60e11b815260040160405180910390fd5b61279361281e565b61161861248e565b6127a58282611ecc565b611ac25760405163e2517d3f60e01b81526001600160a01b0382166004820152602481018390526044016111d9565b5f838152600a60209081526040808320858452909152902054156127f757505050565b805f0361280357505050565b5f928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661161857604051631afcd79f60e31b815260040160405180910390fd5b5f8181526007602052604081205460035415612933575f60078161288c60018761387a565b81526020019081526020015f2054905080821015612931575f6128ad612005565b90505f5b815181101561292b5760085f8781526020019081526020015f205f8383815181106128de576128de61392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f01545f14612923575f86815260076020526040902083905561292b565b6001016128b1565b50819250505b505b8061293c611c57565b101561294f5761294a612b25565b612933565b5f600361295b8361198e565b612966906002613943565b6129709190613850565b61297b9060016137cf565b90505f612986612005565b90505f805b8251811015612a90575f8382815181106129a7576129a761392f565b6020908102919091018101515f8a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612a09575050612a88565b80515f908152600960209081526040808320828501518452909152902054868110612a845781515f908152600a60209081526040808320828601518452909152902054600554612a5990826137cf565b421015612a695750505050612a90565b612a738333612e65565b5060019a9950505050505050505050565b5050505b60010161298b565b5080158015612aac5750612aa2611c57565b612aaa6118aa565b115b15612ac557612ab9612b25565b50600195945050505050565b505f95945050505050565b612ad98261310d565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612b1d5761183a8282613170565b611ac26131e2565b5f612b2e611c57565b90505f612b39612005565b90505f5b8151811015612e25575f83815260146020526040812083518290859085908110612b6957612b6961392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20541115612cb8575f612bba838381518110612bad57612bad61392f565b6020026020010151611a47565b60165460145f8781526020019081526020015f205f868681518110612be157612be161392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054612c139190613943565b612c1d9190613943565b5f5484519192506001600160a01b031690635e00bf4690859085908110612c4657612c4661392f565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101869052911660448201526064015f604051808303815f87803b158015612ca0575f80fd5b505af1158015612cb2573d5f803e3d5ffd5b50505050505b5f83815260156020526040812083518290859085908110612cdb57612cdb61392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f20541115612e1d575f612d1f838381518110612bad57612bad61392f565b60175460155f8781526020019081526020015f205f868681518110612d4657612d4661392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054612d789190613943565b612d829190613943565b5f5484519192506001600160a01b031690635e00bf4690859085908110612dab57612dab61392f565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b03928316600482015260248101869052911660448201526064015f604051808303815f87803b158015612e05575f80fd5b505af1158015612e17573d5f803e3d5ffd5b50505050505b600101612b3d565b505f805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156121eb575f80fd5b5f612e6e611c57565b83515f908152600760205260409020549091508114612ea057604051631f2d18b160e31b815260040160405180910390fd5b8251612eae9060019061387a565b60035414612ecf57604051631f2d18b160e31b815260040160405180910390fd5b5f612ed8612005565b90505f5b8151811015612faa57846020015160085f875f015181526020019081526020015f205f848481518110612f1157612f1161392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f206001015403612fa25760145f8481526020019081526020015f205f838381518110612f6557612f6561392f565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f815480929190612f9c9061399c565b91905055505b600101612edc565b50612fb4846111ee565b612ff5575f8281526015602090815260408083206001600160a01b03871684529091528120805460019290612fea9084906137cf565b9091555061304d9050565b826001600160a01b0316613007611708565b6001600160a01b03160361304d575f8281526015602090815260408083206001600160a01b038716845290915281208054600192906130479084906137cf565b90915550505b6013545f90815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b5f0361314257604051634c9c8ce360e01b81526001600160a01b03821660048201526024016111d9565b5f805160206139eb83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b03168460405161318c91906139b4565b5f60405180830381855af49150503d805f81146131c4576040519150601f19603f3d011682016040523d82523d5f602084013e6131c9565b606091505b50915091506131d9858383613201565b95945050505050565b34156116185760405163b398979f60e01b815260040160405180910390fd5b606082613216576132118261325d565b61115a565b815115801561322d57506001600160a01b0384163b155b1561325657604051639996b31560e01b81526001600160a01b03851660048201526024016111d9565b508061115a565b80511561326d5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f60208284031215613296575f80fd5b81356001600160e01b03198116811461115a575f80fd5b5f805f606084860312156132bf575f80fd5b505081359360208301359350604090920135919050565b5f602082840312156132e6575f80fd5b5035919050565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b0381118282101715613329576133296132ed565b604052919050565b5f60608284031215613341575f80fd5b604051606081016001600160401b0381118282101715613363576133636132ed565b60409081528335825260208085013590830152928301359281019290925250919050565b5f60608284031215613397575f80fd5b61115a8383613331565b6001600160a01b03811681146111eb575f80fd5b5f6001600160401b038211156133cd576133cd6132ed565b5060051b60200190565b5f82601f8301126133e6575f80fd5b81356133f96133f4826133b5565b613301565b8082825260208201915060208360051b86010192508583111561341a575f80fd5b602085015b83811015613440578035613432816133a1565b83526020928301920161341f565b5095945050505050565b5f805f805f805f60e0888a031215613460575f80fd5b873561346b816133a1565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561349a575f80fd5b6134a68a828b016133d7565b93505060a0880135915060c08801356134be816133a1565b8091505092959891949750929550565b5f80604083850312156134df575f80fd5b8235915060208301356134f1816133a1565b809150509250929050565b5f806040838503121561350d575f80fd5b50508035926020909101359150565b5f6020828403121561352c575f80fd5b813561115a816133a1565b5f60208284031215613547575f80fd5b81356001600160401b0381111561355c575f80fd5b611d08848285016133d7565b5f8060408385031215613579575f80fd5b8235613584816133a1565b915060208301356001600160401b0381111561359e575f80fd5b8301601f810185136135ae575f80fd5b80356001600160401b038111156135c7576135c76132ed565b6135da601f8201601f1916602001613301565b8181528660208385010111156135ee575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f6020828403121561361d575f80fd5b81356001600160401b03811115613632575f80fd5b8201601f81018413613642575f80fd5b80356136506133f4826133b5565b80828252602082019150602060608402850101925086831115613671575f80fd5b6020840193505b8284101561369d5761368a8785613331565b8252602082019150606084019350613678565b9695505050505050565b5f805f606084860312156136b9575f80fd5b8335925060208401356136cb816133a1565b915060408401356136db816133a1565b809150509250925092565b5f8151808452602084019350602083015f5b8281101561371f5781516001600160a01b03168652602095860195909101906001016136f8565b5093949350505050565b602081525f61115a60208301846136e6565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f8060408385031215613781575f80fd5b823561378c816133a1565b915060208301356134f1816133a1565b5f602082840312156137ac575f80fd5b8135801515811461115a575f80fd5b634e487b7160e01b5f52601160045260245ffd5b80820180821115611122576111226137bb565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201525f611d0860408301846136e6565b634e487b7160e01b5f52601260045260245ffd5b5f8261385e5761385e61383c565b500490565b5f60208284031215613873575f80fd5b5051919050565b81810381811115611122576111226137bb565b5f6020828403121561389d575f80fd5b81516001600160401b038111156138b2575f80fd5b8201601f810184136138c2575f80fd5b80516138d06133f4826133b5565b8082825260208201915060208360051b8501019250868311156138f1575f80fd5b6020840193505b8284101561369d57835161390b816133a1565b8252602093840193909101906138f8565b5f8261392a5761392a61383c565b500690565b634e487b7160e01b5f52603260045260245ffd5b8082028115828204841417611122576111226137bb565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b5f600182016139ad576139ad6137bb565b5060010190565b5f82518060208501845e5f92019182525091905056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a264697066735822122001bfe86d56e4a897606f8d5f368223ea57ef6cdc9d172f2374ca3da77409609d64736f6c634300081a0033","sourceMap":"545:34560:110:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:143;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;11507:242:110;;;;;;;;;;-1:-1:-1;11507:242:110;;;;;:::i;:::-;;:::i;:::-;;;;1210:13:143;;1192:32;;1280:4;1268:17;;;1262:24;1240:20;;;1233:54;1331:17;;;1325:24;1303:20;;;1296:54;1180:2;1165:18;11507:242:110;968:388:143;6474:129:110;;;;;;;;;;-1:-1:-1;6566:30:110;;6474:129;;;1507:25:143;;;1495:2;1480:18;6474:129:110;1361:177:143;1406:41:111;;;;;;;;;;;;;;;;3846:77;;;;;;;;;;-1:-1:-1;3846:77:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;18935:308:110;;;;;;;;;;-1:-1:-1;18935:308:110;;;;;:::i;:::-;;:::i;:::-;;24959:683;;;;;;;;;;-1:-1:-1;24959:683:110;;;;;:::i;:::-;;:::i;33689:155::-;;;;;;;;;;-1:-1:-1;33689:155:110;;;;;:::i;:::-;;:::i;13996:337::-;;;;;;;;;;-1:-1:-1;13996:337:110;;;;;:::i;:::-;;:::i;2789:1624::-;;;;;;;;;;-1:-1:-1;2789:1624:110;;;;;:::i;:::-;;:::i;5413:111::-;;;;;;;;;;-1:-1:-1;5496:21:110;;5413:111;;33525:158;;;;;;;;;;;;;:::i;5318:107:111:-;;;;;;;;;;-1:-1:-1;5318:107:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;32361:287:110;;;;;;;;;;-1:-1:-1;32361:287:110;;;;;:::i;:::-;;:::i;7053:533::-;;;;;;;;;;-1:-1:-1;7053:533:110;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;17045:115:110:-;;;;;;;;;;;;;:::i;19249:200::-;;;;;;;;;;-1:-1:-1;19249:200:110;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;19402:31:110;;19368:66;;:33;:66;;;;;:74;;;;;;;;;;19361:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19249:200;5246:136:19;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;18335:405:110:-;;;;;;;;;;-1:-1:-1;18335:405:110;;;;;:::i;:::-;;:::i;9951:929::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6818:32:143;;;6800:51;;6788:2;6773:18;9951:929:110;6654:203:143;6348:245:19;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;8946:165:110:-;;;;;;;;;;;;;:::i;8574:133::-;;;;;;;;;;;;;:::i;4950:118:111:-;;;;;;;;;;-1:-1:-1;4950:118:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7415:25:143;;;7471:2;7456:18;;7449:34;;;;7499:18;;;7492:34;7403:2;7388:18;4950:118:111;7213:319:143;4837:570:110;;;;;;;;;;-1:-1:-1;4837:570:110;;;;;:::i;:::-;;:::i;32654:607::-;;;;;;;;;;-1:-1:-1;32654:607:110;;;;;:::i;:::-;;:::i;32108:176::-;;;;;;;;;;-1:-1:-1;32108:176:110;;;;;:::i;:::-;;:::i;1866:326::-;;;;;;;;;;-1:-1:-1;1866:326:110;;;;;:::i;:::-;;:::i;1978:36:111:-;;;;;;;;;;;;;;;;4161:214:21;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;14774:209:110:-;;;;;;;;;;-1:-1:-1;14774:209:110;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;14947:19:110;;;;:11;:19;;;;;;;;-1:-1:-1;;;;;14947:29:110;;;;;;;;;;;;;14940:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14774:209;2261:45:111;;;;;;;;;;;;;;;;33850:165:110;;;;;;;;;;-1:-1:-1;33850:165:110;;;;;:::i;:::-;;:::i;405:31:111:-;;;;;;;;;;-1:-1:-1;405:31:111;;;;-1:-1:-1;;;;;405:31:111;;;16904:135:110;;;;;;;;;;-1:-1:-1;16999:33:110;;16904:135;;8131:129;;;;;;;;;;;;;:::i;764:72::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;764:72:110;;9197:414;;;;;;;;;;;;;:::i;5480:40:111:-;;;;;;;;;;;;;;;;14339:430:110;;;;;;;;;;-1:-1:-1;14339:430:110;;;;;:::i;:::-;;:::i;34093:157::-;;;;;;;;;;-1:-1:-1;34093:157:110;;;;;:::i;:::-;34180:7;34206:27;;;:20;:27;;;;;;;;-1:-1:-1;;;;;34206:37:110;;;;;;;;;;;;;34093:157;8745:131;;;;;;;;;;;;;:::i;5168:97:111:-;;;;;;;;;;-1:-1:-1;5168:97:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;30800:311:110;;;;;;;;;;-1:-1:-1;30800:311:110;;;;;:::i;:::-;;:::i;4005:94:111:-;;;;;;;;;;-1:-1:-1;4005:94:111;;;;;:::i;:::-;;;;;;;;;;;;;;4539:109;;;;;;;;;;-1:-1:-1;4539:109:111;;;;;:::i;:::-;;;;;;;;;;;;;;654:72:110;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;654:72:110;;528:89:113;;;;;;;;;;;;;:::i;2198:136:110:-;;;;;;;;;;-1:-1:-1;2198:136:110;;;;;:::i;:::-;;:::i;2880:87:111:-;;;;;;;;;;-1:-1:-1;2880:87:111;;;;;:::i;:::-;;;;;;;;;;;;;;8331:207:110;;;;;;;;;;;;;:::i;3625:76:111:-;;;;;;;;;;-1:-1:-1;3625:76:111;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3625:76:111;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4465:195:110:-;;;;;;;;;;;;;:::i;15037:159::-;;;;;;;;;;;;;:::i;1623:237::-;;;;;;;;;;-1:-1:-1;1623:237:110;;;;;:::i;:::-;;:::i;4336:100:111:-;;;;;;;;;;-1:-1:-1;4336:100:111;;;;;:::i;:::-;;;;;;;;;;;;;;2317:49:19;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;34600:177:110;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7592:139::-;;;;;;;;;;-1:-1:-1;7689:35:110;;7592:139;;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;31543:484:110:-;;;;;;;;;;-1:-1:-1;31543:484:110;;;;;:::i;:::-;;:::i;31211:198::-;;;;;;;;;;-1:-1:-1;31211:198:110;;;;;:::i;:::-;;:::i;2106:50:111:-;;;;;;;;;;;;;;;;3248:105;;;;;;;;;;-1:-1:-1;3248:105:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2340:226:110;;;;;;;;;;-1:-1:-1;2340:226:110;;;;;:::i;:::-;;:::i;11026:250::-;;;;;;;;;;-1:-1:-1;11026:250:110;;;;;:::i;:::-;;:::i;7737:132::-;;;;;;;;;;-1:-1:-1;7737:132:110;;;;;:::i;:::-;;:::i;15520:149::-;;;;;;;;;;-1:-1:-1;15520:149:110;;;;;:::i;:::-;15599:7;15625:37;;;:29;:37;;;;;;;15520:149;5580:45:111;;;;;;;;;;;;;;;;33339:180:110;;;;;;;;;;-1:-1:-1;33339:180:110;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;3436:114:111:-;;;;;;;;;;-1:-1:-1;3436:114:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5787:464:110;;;;;;;;;;-1:-1:-1;5787:464:110;;;;;:::i;:::-;;:::i;15875:221::-;;;;;;;;;;-1:-1:-1;15875:221:110;;;;;:::i;:::-;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;15875:221;34783:133;;;;;;;;;;-1:-1:-1;34783:133:110;;;;;:::i;:::-;34843:4;34866:19;;;:11;:19;;;;;;;;34886:10;34866:31;;;;;;;:38;:43;;;34783:133;3049:105:111;;;;;;;;;;-1:-1:-1;3049:105:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5074:46;;;;;;;;;;;;;;;;34922:180:110;;;;;;;;;;-1:-1:-1;34922:180:110;;;;;:::i;:::-;35043:31;;34986:4;35009:66;;;:33;:66;;;;;;;;:74;;;;;;;:81;:86;;;34922:180;34336:177;;;;;;;;;;-1:-1:-1;34336:177:110;;;;;:::i;:::-;34433:7;34459:32;;;:25;:32;;;;;;;;-1:-1:-1;;;;;34459:47:110;;;;;;;;;;;;;34336:177;4718:89:111;;;;;;;;;;-1:-1:-1;4718:89:111;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;261:39;;;;;;;;;;-1:-1:-1;261:39:111;;;;-1:-1:-1;;;;;261:39:111;;;4855:34;;;;;;;;;;-1:-1:-1;4855:34:111;;;;;;;;1598:48;;;;;;;;;;;;;;;;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;11507:242:110:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;11693:49:110;;;;;;;;;;;;;;;;;;;;;;11507:242;;;;;;:::o;18935:308::-;19054:37;-1:-1:-1;;;;;;;;;;;19080:10:110;19054:7;:37::i;:::-;19033:132;;;;-1:-1:-1;;;19033:132:110;;13236:2:143;19033:132:110;;;13218:21:143;13275:2;13255:18;;;13248:30;13314:34;13294:18;;;13287:62;-1:-1:-1;;;13365:18:143;;;13358:46;13421:19;;19033:132:110;;;;;;;;;19175:61;19215:20;19175:39;:61::i;:::-;18935:308;:::o;24959:683::-;16028:27;;25078:4;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25148:1;25098:51;25094:94;;-1:-1:-1;25172:5:110;;24959:683;-1:-1:-1;24959:683:110:o;25094:94::-;25561:15;25510:35;6566:30;;;6474:129;25510:35;7689;;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25392:102;;;;:::i;:::-;:153;;;;:::i;:::-;:184;25388:227;;;-1:-1:-1;25599:5:110;;24959:683;-1:-1:-1;24959:683:110:o;25388:227::-;-1:-1:-1;25631:4:110;;24959:683;-1:-1:-1;24959:683:110:o;33689:155::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33795:25:110::1;:42:::0;33689:155::o;13996:337::-;14122:22;;;;;:63;;;14148:37;-1:-1:-1;;;;;;;;;;;14174:10:110;14148:7;:37::i;:::-;14101:144;;;;-1:-1:-1;;;14101:144:110;;;;;;;:::i;:::-;14255:71;14293:10;14305:20;14255:37;:71::i;2789:1624::-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;3225:33:110::1;:31;:33::i;:::-;3268:15;:34:::0;;-1:-1:-1;;;;;;3268:34:110::1;-1:-1:-1::0;;;;;3268:34:110;::::1;::::0;;::::1;::::0;;;3312:26:::1;:56:::0;;;3378:33:::1;:70:::0;;;3458:59:::1;::::0;-1:-1:-1;;;3458:59:110;;:30:::1;::::0;:59:::1;::::0;3489:14;;3505:11;;3458:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3527:32;3548:10;3527:20;:32::i;:::-;3569;3590:10;3569:20;:32::i;:::-;3611:21;:46:::0;;;3667:16:::1;:36:::0;;-1:-1:-1;;;;;;3667:36:110::1;-1:-1:-1::0;;;;;3667:36:110;::::1;;::::0;;4242:19:::1;4259:2;4242:14:::0;:19:::1;:::i;:::-;4204:35;:57:::0;4304:19:::1;4321:2;4304:14:::0;:19:::1;:::i;:::-;4271:30;:52:::0;4361:1:::1;4333:25;:29:::0;;;4372:30:::1;:34:::0;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;14863:50:143;;5142:14:20;;14851:2:143;14836:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;2789:1624:110;;;;;;;:::o;33525:158::-;33612:7;33642:34;33656:19;:17;:19::i;33642:34::-;33635:41;;33525:158;:::o;32361:287::-;32465:7;32503:15;;:138;;-1:-1:-1;;;32503:138:110;;32562:4;32503:138;;;15126:51:143;15193:18;;;15186:34;;;-1:-1:-1;;;;;15256:32:143;;;15236:18;;;15229:60;32503:15:110;;;;:33;;15099:18:143;;32503:138:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7053:533::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;6566:30:110;;7333:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;7333:47:110;;7374:4:::1;7333:47;::::0;::::1;6800:51:143::0;-1:-1:-1;;;;;7333:15:110;;::::1;::::0;:32:::1;::::0;6773:18:143;;7333:47:110::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;;;;:::i;:::-;7293:36;:125;7289:207;;7441:44;;-1:-1:-1::0;;;7441:44:110::1;;;;;;;;;;;7289:207;-1:-1:-1::0;7505:35:110::1;:74:::0;7053:533::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;17045:115:110:-;17107:46;17142:10;17107:34;:46::i;:::-;17045:115::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;18335:405:110:-;18472:37;-1:-1:-1;;;;;;;;;;;18498:10:110;18472:7;:37::i;:::-;18451:152;;;;-1:-1:-1;;;18451:152:110;;15824:2:143;18451:152:110;;;15806:21:143;15863:2;15843:18;;;15836:30;;;15902:34;15882:18;;;15875:62;15973:34;15953:18;;;15946:62;-1:-1:-1;;;16024:19:143;;;16017:35;16069:19;;18451:152:110;15622:472:143;18451:152:110;18647:31;;18613:66;;;;:33;:66;;;;;;;;18680:27;;18613:95;;;;;;;;:118;;;;;;;;;;;;;;;;;;;;18335:405::o;9951:929::-;10000:7;10392:17;10412:27;:25;:27::i;:::-;10392:47;;10449:17;10469:19;:17;:19::i;:::-;10498:26;10527:15;;:66;;-1:-1:-1;;;10527:66:110;;10587:4;10527:66;;;6800:51:143;10449:39:110;;-1:-1:-1;10498:26:110;;-1:-1:-1;;;;;10527:15:110;;;;:51;;6773:18:143;;10527:66:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10527:66:110;;;;;;;;;;;;:::i;:::-;10498:95;;10607:9;:16;10627:1;10607:21;10603:69;;10659:1;10644:17;;;;;9951:929;:::o;10603:69::-;10681:26;10771:9;:16;10745:9;10756;10728:38;;;;;;;;17230:19:143;;;17274:2;17265:12;;17258:28;17311:2;17302:12;;17073:247;10728:38:110;;;;;;;;;;;;;10718:49;;;;;;10710:58;;:77;;;;:::i;:::-;10681:106;;10844:9;10854:18;10844:29;;;;;;;;:::i;:::-;;;;;;;10837:36;;;;;;9951:929;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;8946:165:110:-;9013:7;9039:15;;:65;;-1:-1:-1;;;9039:65:110;;9098:4;9039:65;;;6800:51:143;-1:-1:-1;;;;;9039:15:110;;;;:50;;6773:18:143;;9039:65:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8574:133::-;8622:7;8648:15;;:52;;-1:-1:-1;;;8648:52:110;;8694:4;8648:52;;;6800:51:143;-1:-1:-1;;;;;8648:15:110;;;;:37;;6773:18:143;;8648:52:110;6654:203:143;4837:570:110;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;5033:21:110::1;5057:15:::0;;:47:::1;::::0;-1:-1:-1;;;5057:47:110;;5098:4:::1;5057:47;::::0;::::1;6800:51:143::0;-1:-1:-1;;;;;5057:15:110;;::::1;::::0;:32:::1;::::0;6773:18:143;;5057:47:110::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5033:71:::0;-1:-1:-1;5033:71:110;5229:26:::1;5233:22:::0;5229:1:::1;:26;:::i;:::-;:43;5225:120;;5296:38;;-1:-1:-1::0;;;5296:38:110::1;;;;;;;;;;;5225:120;-1:-1:-1::0;;5354:21:110::1;:46:::0;4837:570::o;32654:607::-;32727:7;32929:15;;:76;;-1:-1:-1;;;32929:76:110;;32990:4;32929:76;;;6800:51:143;32727:7:110;;-1:-1:-1;;;;;32929:15:110;;:39;;6773:18:143;;32929:76:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32929:76:110;;;;;;;;;;;;:::i;:::-;32899:106;;33015:18;33052:9;33047:181;33071:10;:17;33067:1;:21;33047:181;;;33178:39;33196:5;33203:10;33214:1;33203:13;;;;;;;;:::i;:::-;;;;;;;33178:17;:39::i;:::-;33164:53;;;;:::i;:::-;;-1:-1:-1;33090:3:110;;33047:181;;;-1:-1:-1;33244:10:110;32654:607;-1:-1:-1;;;32654:607:110:o;32108:176::-;32204:7;32230:47;32247:19;:17;:19::i;:::-;32268:8;32230:16;:47::i;1866:326::-;1966:39;2362:4:19;1994:10:110;1966:7;:39::i;:::-;1945:120;;;;-1:-1:-1;;;1945:120:110;;;;;;;:::i;:::-;2080:9;2075:111;2099:8;:15;2095:1;:19;2075:111;;;2135:40;-1:-1:-1;;;;;;;;;;;2163:8:110;2172:1;2163:11;;;;;;;;:::i;:::-;;;;;;;2135:9;:40::i;:::-;2116:3;;2075:111;;;;1866:326;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;33850:165:110:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33961:30:110::1;:47:::0;33850:165::o;8131:129::-;8180:7;8206:15;;:47;;-1:-1:-1;;;8206:47:110;;8247:4;8206:47;;;6800:51:143;-1:-1:-1;;;;;8206:15:110;;;;:32;;6773:18:143;;8206:47:110;6654:203:143;9197:414:110;9255:7;9471:15;;:47;;-1:-1:-1;;;9471:47:110;;9512:4;9471:47;;;6800:51:143;9296:15:110;;9255:7;;-1:-1:-1;;;;;9471:15:110;;;;:32;;6773:18:143;;9471:47:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9457:61;;:11;:61;:::i;:::-;9426:92;;9582:21;;9559:20;:44;;;;:::i;:::-;9535:69;;:20;:69;:::i;:::-;9528:76;;;;9197:414;:::o;14339:430::-;14471:22;;;;;:63;;;14497:37;-1:-1:-1;;;;;;;;;;;14523:10:110;14497:7;:37::i;:::-;14450:144;;;;-1:-1:-1;;;14450:144:110;;;;;;;:::i;:::-;14609:9;14604:159;14628:21;:28;14624:1;:32;14604:159;;;14677:75;14715:10;14727:21;14749:1;14727:24;;;;;;;;:::i;:::-;;;;;;;14677:37;:75::i;:::-;14658:3;;14604:159;;8745:131;8795:7;8821:15;;:48;;-1:-1:-1;;;8821:48:110;;8863:4;8821:48;;;6800:51:143;-1:-1:-1;;;;;8821:15:110;;;;:33;;6773:18:143;;8821:48:110;6654:203:143;30800:311:110;30921:7;30959:15;;:145;;-1:-1:-1;;;30959:145:110;;31009:4;30959:145;;;18381:51:143;18448:18;;;18441:34;;;-1:-1:-1;;;;;18511:32:143;;;18491:18;;;18484:60;18580:32;;;18560:18;;;18553:60;30959:15:110;;;;:24;;18353:19:143;;30959:145:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30940:164;30800:311;-1:-1:-1;;;;30800:311:110:o;528:89:113:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;587:23:113::1;:21;:23::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;14863:50:143;;5142:14:20;;14851:2:143;14836:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;528:89:113:o;2198:136:110:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2290:37:110::1;-1:-1:-1::0;;;;;;;;;;;2318:8:110::1;2290:9;:37::i;8331:207::-:0;8381:7;8483:15;;:47;;-1:-1:-1;;;8483:47:110;;8524:4;8483:47;;;6800:51:143;8422:15:110;;-1:-1:-1;;;;;8483:15:110;;:32;;6773:18:143;;8483:47:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8469:61;;:11;:61;:::i;:::-;8454:77;;:11;:77;:::i;:::-;8447:84;;;8331:207;:::o;3732::19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4465:195:110:-;4523:39;2362:4:19;4551:10:110;4523:7;:39::i;:::-;4515:89;;;;-1:-1:-1;;;4515:89:110;;18826:2:143;4515:89:110;;;18808:21:143;18865:2;18845:18;;;18838:30;18904:34;18884:18;;;18877:62;-1:-1:-1;;;18955:18:143;;;18948:35;19000:19;;4515:89:110;18624:401:143;4515:89:110;4614:15;;;:39;;;-1:-1:-1;;;4614:39:110;;;;-1:-1:-1;;;;;4614:15:110;;;;:37;;:39;;;;;;;;;;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;15037:159;15101:7;15163:26;;15127:33;;:62;;;;:::i;1623:237::-;1708:39;2362:4:19;1736:10:110;1708:7;:39::i;:::-;1687:120;;;;-1:-1:-1;;;1687:120:110;;;;;;;:::i;:::-;1817:36;-1:-1:-1;;;;;;;;;;;1845:7:110;1817:9;:36::i;34600:177::-;34703:15;;:66;;-1:-1:-1;;;34703:66:110;;34763:4;34703:66;;;6800:51:143;34668:16:110;;-1:-1:-1;;;;;34703:15:110;;:51;;6773:18:143;;34703:66:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34703:66:110;;;;;;;;;;;;:::i;31543:484::-;31645:7;31694:15;;:76;;-1:-1:-1;;;31694:76:110;;31755:4;31694:76;;;6800:51:143;31645:7:110;;-1:-1:-1;;;;;31694:15:110;;:39;;6773:18:143;;31694:76:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31694:76:110;;;;;;;;;;;;:::i;:::-;31664:106;;31780:18;31817:9;31812:182;31836:10;:17;31832:1;:21;31812:182;;;31943:40;31952:5;31959:10;31970:1;31959:13;;;;;;;;:::i;:::-;;;;;;;31974:8;31943;:40::i;:::-;31929:54;;;;:::i;:::-;;-1:-1:-1;31855:3:110;;31812:182;;;-1:-1:-1;32010:10:110;31543:484;-1:-1:-1;;;;31543:484:110:o;31211:198::-;31326:7;31352:50;31361:19;:17;:19::i;:::-;31382:9;31393:8;31352;:50::i;2340:226::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2452:9:110::1;2447:113;2471:9;:16;2467:1;:20;2447:113;;;2508:41;-1:-1:-1::0;;;;;;;;;;;2536:9:110::1;2546:1;2536:12;;;;;;;;:::i;2508:41::-;2489:3;;2447:113;;11026:250:::0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;11211:15:110::1;::::0;:58:::1;::::0;-1:-1:-1;;;11211:58:110;;11253:4:::1;11211:58;::::0;::::1;19204:51:143::0;19271:18;;;19264:34;;;-1:-1:-1;;;;;11211:15:110;;::::1;::::0;:33:::1;::::0;19177:18:143;;11211:58:110::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11026:250:::0;;:::o;7737:132::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;7830:22:110::1;:32:::0;;-1:-1:-1;;7830:32:110::1;::::0;::::1;;::::0;;;::::1;::::0;;7737:132::o;33339:180::-;33437:7;33463:49;33481:19;:17;:19::i;:::-;33502:9;33463:17;:49::i;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5787:464:110:-:0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;7689:35:110;;6008:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;6008:47:110;;6049:4:::1;6008:47;::::0;::::1;6800:51:143::0;-1:-1:-1;;;;;6008:15:110;;::::1;::::0;:32:::1;::::0;6773:18:143;;6008:47:110::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;;;:::i;:::-;5973:31;:125;5969:202;;6121:39;;-1:-1:-1::0;;;6121:39:110::1;;;;;;;;;;;5969:202;-1:-1:-1::0;6180:30:110::1;:64:::0;5787:464::o;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;11817:2174:110:-;12062:27;;12050:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;12050:50:110;;;;;;;;;:57;:62;12046:113;;12133:26;;-1:-1:-1;;;12133:26:110;;;;;;;;;;;12046:113;12630:27;;12601:26;;12565:33;;:62;;12601:26;12565:62;:::i;:::-;:92;12561:156;;;12680:26;;-1:-1:-1;;;12680:26:110;;;;;;;;;;;12561:156;13081:27;;13051:58;;;;:29;:58;;;;;;:63;;13047:172;;13191:17;:15;:17::i;:::-;13160:27;;13130:58;;;;:29;:58;;;;;:78;13047:172;13287:27;;13275:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;13275:50:110;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;13425:106;;13515:15;13425:27;:106::i;:::-;13593:38;13634:43;13668:8;13634:33;:43::i;:::-;13703:27;;13687:44;;;;:15;:44;;;;;;;;13732:31;;;;13687:77;;;;;;;:111;;13593:84;;-1:-1:-1;13593:84:110;;13687:77;;:44;:111;;13593:84;;13687:111;:::i;:::-;;;;-1:-1:-1;;13857:28:110;;;;;13899:31;;;;;13814:170;;19483:25:143;;;19524:18;;;19517:34;;;13857:28:110;;13814:170;;19456:18:143;13814:170:110;;;;;;;11963:2028;11817:2174;;:::o;738:128:113:-;6931:20:20;:18;:20::i;:::-;817:42:113::1;2362:4:19;848:10:113;817;:42::i;17774:485:110:-:0;18173:67;18202:33;;18238:1;18202:37;;;;:::i;:::-;18173:28;:67::i;:::-;18166:87;;17774:485;:::o;7270:387:19:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:21;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;991:117:113;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;6818:32:143;;6518:60:21;;;6800:51:143;6773:18;;6518:60:21;6654:203:143;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1507:25:143;;;1480:18;;6317:34:21;1361:177:143;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;623:109:113;6931:20:20;:18;:20::i;:::-;692:33:113::1;:31;:33::i;4381:197:19:-:0;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;19222:32:143;;4514:47:19;;;19204:51:143;19271:18;;;19264:34;;;19177:18;;4514:47:19;19030:274:143;16170:443:110;16285:29;;;;:21;:29;;;;;;;;:41;;;;;;;;;:46;16281:263;;16170:443;;;:::o;16281:263::-;16415:9;16428:1;16415:14;16411:133;;16170:443;;;:::o;16411:133::-;16553:29;;;;:21;:29;;;;;;;;:41;;;;;;;;:53;16170:443::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;25987:4503:110;26069:4;26111:47;;;:29;:47;;;;;;16999:33;;26168:1014;;;26426:31;26460:29;26426:31;26490:18;26507:1;26490:16;:18;:::i;:::-;26460:49;;;;;;;;;;;;26426:83;;26545:23;26527:15;:41;26523:649;;;26591:32;26626:37;:35;:37::i;:::-;26591:72;;26791:9;26786:313;26810:15;:22;26806:1;:26;26786:313;;;26865:11;:29;26877:16;26865:29;;;;;;;;;;;:49;26895:15;26911:1;26895:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;26865:49:110;-1:-1:-1;;;;;26865:49:110;;;;;;;;;;;;:56;;;26925:1;26865:61;26861:220;;26954:47;;;;:29;:47;;;;;:73;;;27053:5;;26861:220;26834:3;;26786:313;;;;27134:23;27116:41;;26573:599;26523:649;26307:875;26168:1014;27500:15;27478:19;:17;:19::i;:::-;:37;27471:249;;;27694:15;:13;:15::i;:::-;27471:249;;;27905:21;27968:1;27934:30;27948:15;27934:13;:30::i;:::-;27930:34;;:1;:34;:::i;:::-;27929:40;;;;:::i;:::-;:44;;27972:1;27929:44;:::i;:::-;27905:68;;27983:26;28012:37;:35;:37::i;:::-;27983:66;;28311:31;28365:9;28360:1688;28384:9;:16;28380:1;:20;28360:1688;;;28421:16;28440:9;28450:1;28440:12;;;;;;;;:::i;:::-;;;;;;;;;;;;28466:48;28517:29;;;:11;:29;;;;;;-1:-1:-1;;;;;28517:39:110;;;;;;;;;;28466:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28440:12;;-1:-1:-1;28466:90:110;28759:47;;28755:61;;28808:8;;;;28755:61;28935:27;;28886:30;28919:44;;;:15;:44;;;;;;;;28964:31;;;;28919:77;;;;;;;;29015:39;;;29011:1027;;16028:27;;29262:17;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;29443:35;;29431:47;;16006:83;29431:47;:::i;:::-;29413:15;:65;29409:76;;;29480:5;;;;;;29409:76;29504:66;29537:20;29559:10;29504:32;:66::i;:::-;-1:-1:-1;29617:4:110;;25987:4503;-1:-1:-1;;;;;;;;;;25987:4503:110:o;29011:1027::-;28407:1641;;;28360:1688;28402:3;;28360:1688;;;;30261:26;30260:27;:70;;;;;30311:19;:17;:19::i;:::-;30291:17;:15;:17::i;:::-;:39;30260:70;30256:206;;;30346:15;:13;:15::i;:::-;-1:-1:-1;30382:4:110;;25987:4503;-1:-1:-1;;;;;25987:4503:110:o;30256:206::-;-1:-1:-1;30478:5:110;;25987:4503;-1:-1:-1;;;;;25987:4503:110:o;2264:344:40:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;22785:1897:110:-;22897:22;22922:19;:17;:19::i;:::-;22897:44;;22951:26;22980:37;:35;:37::i;:::-;22951:66;;23059:9;23054:1580;23078:9;:16;23074:1;:20;23054:1580;;;23172:1;23119:36;;;:20;:36;;;;;23156:12;;23172:1;;23156:9;;23166:1;;23156:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23119:50:110;-1:-1:-1;;;;;23119:50:110;;;;;;;;;;;;;:54;23115:697;;;23273:14;23371:47;23405:9;23415:1;23405:12;;;;;;;;:::i;:::-;;;;;;;23371:33;:47::i;:::-;23343:25;;23290:20;:36;23311:14;23290:36;;;;;;;;;;;:50;23327:9;23337:1;23327:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23290:50:110;-1:-1:-1;;;;;23290:50:110;;;;;;;;;;;;;:78;;;;:::i;:::-;:128;;;;:::i;:::-;23563:15;;23596:12;;23273:145;;-1:-1:-1;;;;;;23563:15:110;;:32;;23596:9;;23606:1;;23596:12;;;;;;:::i;:::-;;;;;;;;;;;23618:16;;23563:72;;-1:-1:-1;;;;;;23563:72:110;;;;;;;-1:-1:-1;;;;;15144:32:143;;;23563:72:110;;;15126:51:143;15193:18;;;15186:34;;;23618:16:110;;15236:18:143;;;15229:60;15099:18;;23563:72:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23175:637;23115:697;23932:1;23874:41;;;:25;:41;;;;;23916:12;;23932:1;;23916:9;;23926:1;;23916:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23874:55:110;-1:-1:-1;;;;;23874:55:110;;;;;;;;;;;;;:59;23870:754;;;23953:14;24061:47;24095:9;24105:1;24095:12;;;;;;;;:::i;24061:47::-;24028:30;;23970:25;:41;23996:14;23970:41;;;;;;;;;;;:55;24012:9;24022:1;24012:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23970:55:110;-1:-1:-1;;;;;23970:55:110;;;;;;;;;;;;;:88;;;;:::i;:::-;:138;;;;:::i;:::-;24126:15;;24159:12;;23953:155;;-1:-1:-1;;;;;;24126:15:110;;:32;;24159:9;;24169:1;;24159:12;;;;;;:::i;:::-;;;;;;;;;;;24181:16;;24126:72;;-1:-1:-1;;;;;;24126:72:110;;;;;;;-1:-1:-1;;;;;15144:32:143;;;24126:72:110;;;15126:51:143;15193:18;;;15186:34;;;24181:16:110;;15236:18:143;;;15229:60;15099:18;;24126:72:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23935:689;23870:754;23096:3;;23054:1580;;;-1:-1:-1;24644:15:110;;;:31;;;-1:-1:-1;;;24644:31:110;;;;-1:-1:-1;;;;;24644:15:110;;;;:29;;:31;;;;;;;;;;:15;;:31;;;;;;;;;;19647:2891;19776:29;19808:19;:17;:19::i;:::-;20102:27;;20072:58;;;;:29;:58;;;;;;19776:51;;-1:-1:-1;20072:83:110;;20068:155;;20178:34;;-1:-1:-1;;;20178:34:110;;;;;;;;;;;20068:155;20372:27;;:31;;20402:1;;20372:31;:::i;:::-;20335:33;;:68;20331:140;;20426:34;;-1:-1:-1;;;20426:34:110;;;;;;;;;;;20331:140;20571:26;20600:37;:35;:37::i;:::-;20571:66;;20652:9;20647:269;20671:9;:16;20667:1;:20;20647:269;;;20781:20;:31;;;20712:11;:40;20724:20;:27;;;20712:40;;;;;;;;;;;:54;20753:9;20763:1;20753:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20712:54:110;-1:-1:-1;;;;;20712:54:110;;;;;;;;;;;;:65;;;:100;20708:198;;20832:20;:43;20853:21;20832:43;;;;;;;;;;;:57;20876:9;20886:1;20876:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20832:57:110;-1:-1:-1;;;;;20832:57:110;;;;;;;;;;;;;:59;;;;;;;;;:::i;:::-;;;;;;20708:198;20689:3;;20647:269;;;;20972:60;21011:20;20972:38;:60::i;:::-;20967:900;;21157:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21157:58:110;;;;;;;;;:63;;21219:1;;21157:48;:63;;21219:1;;21157:63;:::i;:::-;;;;-1:-1:-1;20967:900:110;;-1:-1:-1;20967:900:110;;21751:8;-1:-1:-1;;;;;21729:30:110;:18;:16;:18::i;:::-;-1:-1:-1;;;;;21729:30:110;;21725:132;;21779:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21779:58:110;;;;;;;;;:63;;21841:1;;21779:48;:63;;21841:1;;21779:63;:::i;:::-;;;;-1:-1:-1;;21725:132:110;21911:31;;21877:66;;;;:33;:66;;;;;;;;21944:27;;21877:95;;;;;;;:118;;;;;;;;;;;;;;;;;;;;;;;;;;;22005:33;:63;;;22078:44;;;:15;:44;;;;;:55;;-1:-1:-1;;;;;;22078:55:110;-1:-1:-1;;;;;22078:55:110;;;;;22172:27;;22143:57;;:28;:57;;;;;22203:12;22143:72;;22257:27;;22225:60;;:31;:60;;;;;;22288:15;22225:78;;22407:28;22449:31;;22494:27;;22370:161;;19483:25:143;;;19524:18;;;19517:34;;;;22370:161:110;;19456:18:143;22370:161:110;;;;;;;19766:2772;;19647:2891;;:::o;1671:281:40:-;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;6818:32:143;;1805:47:40;;;6800:51:143;6773:18;;1805:47:40;6654:203:143;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;6818:32:143;;4933:24:53;;;6800:51:143;6773:18;;4933:24:53;6654:203:143;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:143;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:143;;209:43;;199:71;;266:1;263;256:12;497:466;574:6;582;590;643:2;631:9;622:7;618:23;614:32;611:52;;;659:1;656;649:12;611:52;-1:-1:-1;;704:23:143;;;824:2;809:18;;796:32;;-1:-1:-1;927:2:143;912:18;;;899:32;;497:466;-1:-1:-1;497:466:143:o;1543:226::-;1602:6;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;-1:-1:-1;1716:23:143;;1543:226;-1:-1:-1;1543:226:143:o;1774:127::-;1835:10;1830:3;1826:20;1823:1;1816:31;1866:4;1863:1;1856:15;1890:4;1887:1;1880:15;1906:275;1977:2;1971:9;2042:2;2023:13;;-1:-1:-1;;2019:27:143;2007:40;;-1:-1:-1;;;;;2062:34:143;;2098:22;;;2059:62;2056:88;;;2124:18;;:::i;:::-;2160:2;2153:22;1906:275;;-1:-1:-1;1906:275:143:o;2186:727::-;2253:5;2301:4;2289:9;2284:3;2280:19;2276:30;2273:50;;;2319:1;2316;2309:12;2273:50;2372:2;2366:9;2414:4;2402:17;;-1:-1:-1;;;;;2434:34:143;;2470:22;;;2431:62;2428:88;;;2496:18;;:::i;:::-;2532:2;2525:22;;;2616:23;;2648;;2744:2;2729:18;;;2716:32;2764:15;;;2757:32;2847:18;;;2834:32;2882:15;;;2875:32;;;;-1:-1:-1;2565:6:143;2186:727;-1:-1:-1;2186:727:143:o;2918:254::-;3016:6;3069:2;3057:9;3048:7;3044:23;3040:32;3037:52;;;3085:1;3082;3075:12;3037:52;3108:58;3158:7;3147:9;3108:58;:::i;3177:149::-;-1:-1:-1;;;;;3270:31:143;;3260:42;;3250:70;;3316:1;3313;3306:12;3331:183;3391:4;-1:-1:-1;;;;;3416:6:143;3413:30;3410:56;;;3446:18;;:::i;:::-;-1:-1:-1;3491:1:143;3487:14;3503:4;3483:25;;3331:183::o;3519:762::-;3573:5;3626:3;3619:4;3611:6;3607:17;3603:27;3593:55;;3644:1;3641;3634:12;3593:55;3684:6;3671:20;3711:64;3727:47;3767:6;3727:47;:::i;:::-;3711:64;:::i;:::-;3799:3;3823:6;3818:3;3811:19;3855:4;3850:3;3846:14;3839:21;;3916:4;3906:6;3903:1;3899:14;3891:6;3887:27;3883:38;3869:52;;3944:3;3936:6;3933:15;3930:35;;;3961:1;3958;3951:12;3930:35;3997:4;3989:6;3985:17;4011:239;4027:6;4022:3;4019:15;4011:239;;;4109:3;4096:17;4126:49;4169:5;4126:49;:::i;:::-;4188:18;;4235:4;4226:14;;;;4044;4011:239;;;-1:-1:-1;4268:7:143;3519:762;-1:-1:-1;;;;;3519:762:143:o;4286:1170::-;4450:6;4458;4466;4474;4482;4490;4498;4551:3;4539:9;4530:7;4526:23;4522:33;4519:53;;;4568:1;4565;4558:12;4519:53;4607:9;4594:23;4626:49;4669:5;4626:49;:::i;:::-;4694:5;-1:-1:-1;4772:2:143;4757:18;;4744:32;;-1:-1:-1;4875:2:143;4860:18;;4847:32;;-1:-1:-1;4978:2:143;4963:18;;4950:32;;-1:-1:-1;5059:3:143;5044:19;;5031:33;-1:-1:-1;;;;;5076:30:143;;5073:50;;;5119:1;5116;5109:12;5073:50;5142:61;5195:7;5186:6;5175:9;5171:22;5142:61;:::i;:::-;5132:71;-1:-1:-1;;5276:3:143;5261:19;;5248:33;;-1:-1:-1;5359:3:143;5344:19;;5331:33;5373:51;5331:33;5373:51;:::i;:::-;5443:7;5433:17;;;4286:1170;;;;;;;;;;:::o;5461:385::-;5529:6;5537;5590:2;5578:9;5569:7;5565:23;5561:32;5558:52;;;5606:1;5603;5596:12;5558:52;5651:23;;;-1:-1:-1;5750:2:143;5735:18;;5722:32;5763:51;5722:32;5763:51;:::i;:::-;5833:7;5823:17;;;5461:385;;;;;:::o;6862:346::-;6930:6;6938;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;-1:-1:-1;;7052:23:143;;;7172:2;7157:18;;;7144:32;;-1:-1:-1;6862:346:143:o;7537:265::-;7596:6;7649:2;7637:9;7628:7;7624:23;7620:32;7617:52;;;7665:1;7662;7655:12;7617:52;7704:9;7691:23;7723:49;7766:5;7723:49;:::i;7807:348::-;7891:6;7944:2;7932:9;7923:7;7919:23;7915:32;7912:52;;;7960:1;7957;7950:12;7912:52;8000:9;7987:23;-1:-1:-1;;;;;8025:6:143;8022:30;8019:50;;;8065:1;8062;8055:12;8019:50;8088:61;8141:7;8132:6;8121:9;8117:22;8088:61;:::i;8160:918::-;8237:6;8245;8298:2;8286:9;8277:7;8273:23;8269:32;8266:52;;;8314:1;8311;8304:12;8266:52;8353:9;8340:23;8372:49;8415:5;8372:49;:::i;:::-;8440:5;-1:-1:-1;8496:2:143;8481:18;;8468:32;-1:-1:-1;;;;;8512:30:143;;8509:50;;;8555:1;8552;8545:12;8509:50;8578:22;;8631:4;8623:13;;8619:27;-1:-1:-1;8609:55:143;;8660:1;8657;8650:12;8609:55;8700:2;8687:16;-1:-1:-1;;;;;8718:6:143;8715:30;8712:56;;;8748:18;;:::i;:::-;8790:57;8837:2;8814:17;;-1:-1:-1;;8810:31:143;8843:2;8806:40;8790:57;:::i;:::-;8870:6;8863:5;8856:21;8918:7;8913:2;8904:6;8900:2;8896:15;8892:24;8889:37;8886:57;;;8939:1;8936;8929:12;8886:57;8994:6;8989:2;8985;8981:11;8976:2;8969:5;8965:14;8952:49;9046:1;9041:2;9032:6;9025:5;9021:18;9017:27;9010:38;9067:5;9057:15;;;;;8160:918;;;;;:::o;9083:965::-;9206:6;9259:2;9247:9;9238:7;9234:23;9230:32;9227:52;;;9275:1;9272;9265:12;9227:52;9315:9;9302:23;-1:-1:-1;;;;;9340:6:143;9337:30;9334:50;;;9380:1;9377;9370:12;9334:50;9403:22;;9456:4;9448:13;;9444:27;-1:-1:-1;9434:55:143;;9485:1;9482;9475:12;9434:55;9525:2;9512:16;9548:64;9564:47;9604:6;9564:47;:::i;9548:64::-;9634:3;9658:6;9653:3;9646:19;9690:2;9685:3;9681:12;9674:19;;9748:2;9740:4;9732:6;9728:17;9724:2;9720:26;9716:35;9702:49;;9774:7;9766:6;9763:19;9760:39;;;9795:1;9792;9785:12;9760:39;9827:2;9823;9819:11;9808:22;;9839:179;9855:6;9850:3;9847:15;9839:179;;;9923:52;9967:7;9962:3;9923:52;:::i;:::-;9918:3;9911:65;10005:2;10000:3;9996:12;9989:19;;9881:4;9876:3;9872:14;9865:21;;9839:179;;;10037:5;9083:965;-1:-1:-1;;;;;;9083:965:143:o;10053:544::-;10130:6;10138;10146;10199:2;10187:9;10178:7;10174:23;10170:32;10167:52;;;10215:1;10212;10205:12;10167:52;10260:23;;;-1:-1:-1;10359:2:143;10344:18;;10331:32;10372:51;10331:32;10372:51;:::i;:::-;10442:7;-1:-1:-1;10501:2:143;10486:18;;10473:32;10514:51;10473:32;10514:51;:::i;:::-;10584:7;10574:17;;;10053:544;;;;;:::o;10602:446::-;10655:3;10693:5;10687:12;10720:6;10715:3;10708:19;10752:4;10747:3;10743:14;10736:21;;10791:4;10784:5;10780:16;10814:1;10824:199;10838:6;10835:1;10832:13;10824:199;;;10903:13;;-1:-1:-1;;;;;10899:39:143;10887:52;;10968:4;10959:14;;;;10996:17;;;;10935:1;10853:9;10824:199;;;-1:-1:-1;11039:3:143;;10602:446;-1:-1:-1;;;;10602:446:143:o;11053:261::-;11232:2;11221:9;11214:21;11195:4;11252:56;11304:2;11293:9;11289:18;11281:6;11252:56;:::i;11319:418::-;11468:2;11457:9;11450:21;11431:4;11500:6;11494:13;11543:6;11538:2;11527:9;11523:18;11516:34;11602:6;11597:2;11589:6;11585:15;11580:2;11569:9;11565:18;11559:50;11658:1;11653:2;11644:6;11633:9;11629:22;11625:31;11618:42;11728:2;11721;11717:7;11712:2;11704:6;11700:15;11696:29;11685:9;11681:45;11677:54;11669:62;;;11319:418;;;;:::o;11742:424::-;11810:6;11818;11871:2;11859:9;11850:7;11846:23;11842:32;11839:52;;;11887:1;11884;11877:12;11839:52;11926:9;11913:23;11945:49;11988:5;11945:49;:::i;:::-;12013:5;-1:-1:-1;12070:2:143;12055:18;;12042:32;12083:51;12042:32;12083:51;:::i;12522:273::-;12578:6;12631:2;12619:9;12610:7;12606:23;12602:32;12599:52;;;12647:1;12644;12637:12;12599:52;12686:9;12673:23;12739:5;12732:13;12725:21;12718:5;12715:32;12705:60;;12761:1;12758;12751:12;13451:127;13512:10;13507:3;13503:20;13500:1;13493:31;13543:4;13540:1;13533:15;13567:4;13564:1;13557:15;13583:125;13648:9;;;13669:10;;;13666:36;;;13682:18;;:::i;13713:398::-;13915:2;13897:21;;;13954:2;13934:18;;;13927:30;13993:34;13988:2;13973:18;;13966:62;-1:-1:-1;;;14059:2:143;14044:18;;14037:32;14101:3;14086:19;;13713:398::o;14116:332::-;14323:6;14312:9;14305:25;14366:2;14361;14350:9;14346:18;14339:30;14286:4;14386:56;14438:2;14427:9;14423:18;14415:6;14386:56;:::i;14453:127::-;14514:10;14509:3;14505:20;14502:1;14495:31;14545:4;14542:1;14535:15;14569:4;14566:1;14559:15;14585:120;14625:1;14651;14641:35;;14656:18;;:::i;:::-;-1:-1:-1;14690:9:143;;14585:120::o;15300:184::-;15370:6;15423:2;15411:9;15402:7;15398:23;15394:32;15391:52;;;15439:1;15436;15429:12;15391:52;-1:-1:-1;15462:16:143;;15300:184;-1:-1:-1;15300:184:143:o;15489:128::-;15556:9;;;15577:11;;;15574:37;;;15591:18;;:::i;16099:969::-;16194:6;16247:2;16235:9;16226:7;16222:23;16218:32;16215:52;;;16263:1;16260;16253:12;16215:52;16296:9;16290:16;-1:-1:-1;;;;;16321:6:143;16318:30;16315:50;;;16361:1;16358;16351:12;16315:50;16384:22;;16437:4;16429:13;;16425:27;-1:-1:-1;16415:55:143;;16466:1;16463;16456:12;16415:55;16499:2;16493:9;16522:64;16538:47;16578:6;16538:47;:::i;16522:64::-;16608:3;16632:6;16627:3;16620:19;16664:2;16659:3;16655:12;16648:19;;16719:2;16709:6;16706:1;16702:14;16698:2;16694:23;16690:32;16676:46;;16745:7;16737:6;16734:19;16731:39;;;16766:1;16763;16756:12;16731:39;16798:2;16794;16790:11;16779:22;;16810:228;16826:6;16821:3;16818:15;16810:228;;;16899:3;16893:10;16916:49;16959:5;16916:49;:::i;:::-;16978:18;;17025:2;16843:12;;;;17016;;;;16810:228;;17325:112;17357:1;17383;17373:35;;17388:18;;:::i;:::-;-1:-1:-1;17422:9:143;;17325:112::o;17442:127::-;17503:10;17498:3;17494:20;17491:1;17484:31;17534:4;17531:1;17524:15;17558:4;17555:1;17548:15;17574:168;17647:9;;;17678;;17695:15;;;17689:22;;17675:37;17665:71;;17716:18;;:::i;17747:398::-;17949:2;17931:21;;;17988:2;17968:18;;;17961:30;18027:34;18022:2;18007:18;;18000:62;-1:-1:-1;;;18093:2:143;18078:18;;18071:32;18135:3;18120:19;;17747:398::o;20030:135::-;20069:3;20090:17;;;20087:43;;20110:18;;:::i;:::-;-1:-1:-1;20157:1:143;20146:13;;20030:135::o;20170:301::-;20299:3;20337:6;20331:13;20383:6;20376:4;20368:6;20364:17;20359:3;20353:37;20445:1;20409:16;;20434:13;;;-1:-1:-1;20409:16:143;20170:301;-1:-1:-1;20170:301:143:o","linkReferences":{},"immutableReferences":{"39722":[{"start":9699,"length":32},{"start":9740,"length":32},{"start":10061,"length":32}]}},"methodIdentifiers":{"COMMITMENT_ADMIN()":"80e460f0","DEFAULT_ADMIN_ROLE()":"a217fddf","TRUSTED_ATTESTER()":"5db916ab","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptGenesisCeremony()":"92a2ebf3","attesterRewardPoints(uint256,address)":"6f865294","batchGrantCommitmentAdmin(address[])":"4b47d955","batchGrantTrustedAttester(address[])":"cf6772ad","commitmentFirstSeenAt(uint256,bytes32)":"d7830688","commitmentStake(uint256,bytes32)":"c19b406c","commitments(uint256,address)":"e90d4c06","createSuperBlockCommitment(uint256,bytes32,bytes32)":"026583d7","forceLatestCommitment((uint256,bytes32,bytes32))":"08c7050f","getAcceptingEpoch()":"6c713af8","getAttesterRewardPoints(uint256,address)":"6978ab12","getAttesterStake(uint256,address)":"ba26513e","getAttesterStakeForAcceptingEpoch(address)":"491d0467","getCommitmentByAttester(uint256,address)":"f1949add","getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":"e07472ef","getCustodianStake(uint256,address)":"1de38fe1","getCustodianStakeForAcceptingEpoch(address)":"d440116d","getEpochDuration()":"5d3ea8f1","getEpochStartTime()":"90879f64","getLastPostconfirmedSuperBlockHeight()":"59b99597","getMaxTolerableSuperBlockHeight()":"943b79e2","getMinCommitmentAgeForPostconfirmation()":"ab208ebd","getNextAcceptingEpochWithException()":"3752d675","getPostconfirmedCommitment(uint256)":"2bfd11d6","getPostconfirmer()":"35ea1c63","getPostconfirmerDuration()":"1241ebe3","getPostconfirmerPrivilegeDuration()":"028e490a","getPostconfirmerRewardPoints(uint256,address)":"ed8a1d59","getPostconfirmerStartTime()":"5f4d642e","getPresentEpoch()":"37d7f58f","getRoleAdmin(bytes32)":"248a9ca3","getStake(uint256,address,address)":"7aa81c2a","getStakeForAcceptingEpoch(address,address)":"bb04bd2f","getStakedAttestersForAcceptingEpoch()":"aa0d6fcd","getSuperBlockHeightAssignedEpoch(uint256)":"d283392e","getTotalStake(uint256)":"45367f23","getTotalStakeForAcceptingEpoch()":"14e38026","getValidatorCommitmentAtSuperBlockHeight(uint256,address)":"556d97c8","grantCommitmentAdmin(address)":"949d7c2a","grantRole(bytes32,address)":"2f2ff15d","grantTrustedAttester(address)":"81df1746","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address,uint256,uint256,uint256,address[],uint256,address)":"107e21ca","isCommitted(uint256)":"e4a3fb74","isPostconfirmed(uint256)":"ec23ec2e","isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":"0cf6b6bd","lastPostconfirmedSuperBlockHeight()":"fdafe9ca","leadingSuperBlockTolerance()":"03d3f7fd","minCommitmentAgeForPostconfirmation()":"bff92c8c","moveTokenAddress()":"58376877","openAttestationEnabled()":"ef9ae15c","postconfirmSuperBlocksAndRollover()":"26624e37","postconfirmedAtL1BlockHeight(uint256)":"7ac561c8","postconfirmedAtL1BlockHeightByPostconfirmer(uint256)":"7cfd8205","postconfirmedAtL1BlockTimestamp(uint256)":"a207fe2f","postconfirmedBy(uint256)":"91807e4f","postconfirmedByPostconfirmer(uint256)":"08750a32","postconfirmedSuperBlocks(uint256)":"eda67fc4","postconfirmedSuperBlocksVersion()":"ec18c186","postconfirmerDuration()":"4ceb2e66","postconfirmerPrivilegeDuration()":"55b8119d","postconfirmerRewardPoints(uint256,address)":"1db859c7","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardPerAttestationPoint()":"5f83c7d5","rewardPerPostconfirmationPoint()":"d3eef4cc","setAcceptingEpoch(uint256)":"d03509ec","setMinCommitmentAgeForPostconfirmation(uint256)":"1f83e2a3","setOpenAttestationEnabled(bool)":"d2526fef","setPostconfirmedCommitmentAtBlockHeight((uint256,bytes32,bytes32))":"3119edd4","setPostconfirmerDuration(uint256)":"3d645927","setPostconfirmerPrivilegeDuration(uint256)":"da7d28b6","setRewardPerAttestationPoint(uint256)":"0d39f7f0","setRewardPerPostconfirmationPoint(uint256)":"57342282","stakingContract()":"ee99205c","submitBatchSuperBlockCommitment((uint256,bytes32,bytes32)[])":"622e3616","submitSuperBlockCommitment((uint256,bytes32,bytes32))":"0e74b609","superBlockHeightAssignedEpoch(uint256)":"85e6b8c2","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286","versionedPostconfirmedSuperBlocks(uint256,uint256)":"3ba18005"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AttesterAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLongForEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnacceptableSuperBlockCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDurationTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"attesterStake\",\"type\":\"uint256\"}],\"name\":\"SuperBlockCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"SuperBlockPostconfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMITMENT_ADMIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_ATTESTER\",\"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\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"attesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchGrantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"}],\"name\":\"batchGrantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitement\",\"type\":\"bytes32\"}],\"name\":\"commitmentStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"name\":\"createSuperBlockCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"forceLatestCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCommitmentByAttester\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"getCommitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxTolerableSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getPostconfirmedCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"getPostconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPresentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getSuperBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getTotalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getValidatorCommitmentAtSuperBlockHeight\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"grantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"_stakingContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lastPostconfirmedSuperBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leadingSuperBlockTolerance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_custodians\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_moveTokenAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isCommitted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isPostconfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"isWithinPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leadingSuperBlockTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moveTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmSuperBlocksAndRollover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeightByPostconfirmer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedBy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedByPostconfirmer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmedSuperBlocksVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"postconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerAttestationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerPostconfirmationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minCommitmentAgeForPostconfirmation\",\"type\":\"uint256\"}],\"name\":\"setMinCommitmentAgeForPostconfirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOpenAttestationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"setPostconfirmedCommitmentAtBlockHeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerPrivilegeDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerPrivilegeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerAttestationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerPostconfirmationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingContract\",\"outputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment[]\",\"name\":\"superBlockCommitments\",\"type\":\"tuple[]\"}],\"name\":\"submitBatchSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"submitSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"superBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"versionedPostconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getPostconfirmerPrivilegeDuration()\":{\"returns\":{\"_0\":\"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"details\":\"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAcceptingEpoch(uint256)\":{\"params\":{\"newEpoch\":\"The new accepting epoch value\"}},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"params\":{\"_minCommitmentAgeForPostconfirmation\":\"New minimum commitment age \"}},\"setPostconfirmerDuration(uint256)\":{\"params\":{\"_postconfirmerDuration\":\"New postconfirmer term duration in time units\"}},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"params\":{\"_postconfirmerPrivilegeDuration\":\"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"PostconfirmerDurationTooLong()\":[{\"notice\":\"Error thrown when postconfirmer term is greater than 256 blocks\"}],\"PostconfirmerDurationTooLongForEpoch()\":[{\"notice\":\"Error thrown when postconfirmer term is too large for epoch duration\"}],\"minCommitmentAgeForPostconfirmationTooLong()\":[{\"notice\":\"Error thrown when minimum commitment age is greater than epoch duration\"}],\"postconfirmerPrivilegeDurationTooLong()\":[{\"notice\":\"Error thrown when maximum postconfirmer non-reactivity time is greater than epoch duration\"}]},\"kind\":\"user\",\"methods\":{\"COMMITMENT_ADMIN()\":{\"notice\":\"The role that allows the commitment admin to set the accepting epoch\"},\"TRUSTED_ATTESTER()\":{\"notice\":\"The role that allows attesters to submit commitments\"},\"acceptGenesisCeremony()\":{\"notice\":\"Accepts the genesis ceremony.\"},\"getAcceptingEpoch()\":{\"notice\":\"get the accepting epoch\"},\"getAttesterRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for an attester in a given epoch\"},\"getAttesterStake(uint256,address)\":{\"notice\":\"Gets the stake for a given attester at a given epoch\"},\"getAttesterStakeForAcceptingEpoch(address)\":{\"notice\":\"Gets the stake for a given attester at the accepting epoch\"},\"getCommitmentByAttester(uint256,address)\":{\"notice\":\"Gets the commitment submitted by an attester for a given height\"},\"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))\":{\"notice\":\"get the timestamp when a commitment was first seen\"},\"getCustodianStake(uint256,address)\":{\"notice\":\"Gets the stake for a given custodian for a given epoch\"},\"getEpochDuration()\":{\"notice\":\"Gets the epoch duration\"},\"getEpochStartTime()\":{\"notice\":\"Gets the time at which the current epoch started\"},\"getLastPostconfirmedSuperBlockHeight()\":{\"notice\":\"Gets the height of the last postconfirmed superblock\"},\"getPostconfirmedCommitment(uint256)\":{\"notice\":\"get the postconfirmed commitment for a given height\"},\"getPostconfirmer()\":{\"notice\":\"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness\"},\"getPostconfirmerDuration()\":{\"notice\":\"Gets the postconfirmer duration\"},\"getPostconfirmerPrivilegeDuration()\":{\"notice\":\"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"getPostconfirmerRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for a postconfirmer in a given epoch\"},\"getPostconfirmerStartTime()\":{\"notice\":\"Gets the time at which the current postconfirmer's term started\"},\"getPresentEpoch()\":{\"notice\":\"get the present epoch\"},\"getStake(uint256,address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at a given epoch\"},\"getStakeForAcceptingEpoch(address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at the accepting epoch\"},\"getStakedAttestersForAcceptingEpoch()\":{\"notice\":\"Gets the attesters who have stake in the current accepting epoch\"},\"getSuperBlockHeightAssignedEpoch(uint256)\":{\"notice\":\"Gets the epoch assigned to a superblock height\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"notice\":\"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window\"},\"minCommitmentAgeForPostconfirmation()\":{\"notice\":\"Minimum time that must pass before a commitment can be postconfirmed\"},\"postconfirmSuperBlocksAndRollover()\":{\"notice\":\"postconfirm superblocks and rollover\"},\"postconfirmerDuration()\":{\"notice\":\"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period.\"},\"postconfirmerPrivilegeDuration()\":{\"notice\":\"Max time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"setAcceptingEpoch(uint256)\":{\"notice\":\"Sets the accepting epoch to a new value (must be higher than current)\"},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"notice\":\"Sets the minimum time that must pass before a commitment can be postconfirmed\"},\"setPostconfirmerDuration(uint256)\":{\"notice\":\"Sets the postconfirmer term duration, must be less than epoch duration\"},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"notice\":\"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/settlement/PCP.sol\":\"PCP\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/settlement/PCP.sol\":{\"keccak256\":\"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b\",\"dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp\"]},\"src/settlement/PCPStorage.sol\":{\"keccak256\":\"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff\",\"dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss\"]},\"src/settlement/interfaces/IPCP.sol\":{\"keccak256\":\"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f\",\"dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg\"]},\"src/settlement/settlement/BaseSettlement.sol\":{\"keccak256\":\"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e\",\"dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AttesterAlreadyCommitted"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLong"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLongForEpoch"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnacceptableSuperBlockCommitment"},{"inputs":[],"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong"},{"inputs":[],"type":"error","name":"postconfirmerPrivilegeDurationTooLong"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"attesterStake","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockCommitmentSubmitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"height","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockPostconfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMITMENT_ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TRUSTED_ATTESTER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"attesterRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantCommitmentAdmin"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantTrustedAttester"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitement","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentStake","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"commitments","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"createSuperBlockCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"forceLatestCommitment"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCommitmentByAttester","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"getCommitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxTolerableSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPostconfirmedCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"getPostconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPresentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSuperBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTotalStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCommitmentAdmin"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantTrustedAttester"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IMovementStaking","name":"_stakingContract","type":"address"},{"internalType":"uint256","name":"_lastPostconfirmedSuperBlockHeight","type":"uint256"},{"internalType":"uint256","name":"_leadingSuperBlockTolerance","type":"uint256"},{"internalType":"uint256","name":"_epochDuration","type":"uint256"},{"internalType":"address[]","name":"_custodians","type":"address[]"},{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"},{"internalType":"address","name":"_moveTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isCommitted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isPostconfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"isWithinPostconfirmerPrivilegeDuration","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leadingSuperBlockTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"moveTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"openAttestationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"postconfirmSuperBlocksAndRollover"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeight","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockTimestamp","outputs":[{"internalType":"uint256","name":"L1BlockTimestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedBy","outputs":[{"internalType":"address","name":"attester","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedByPostconfirmer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocksVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"postconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerAttestationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerPostconfirmationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"uint256","name":"_minCommitmentAgeForPostconfirmation","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMinCommitmentAgeForPostconfirmation"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOpenAttestationEnabled"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmedCommitmentAtBlockHeight"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerDuration"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerPrivilegeDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerPrivilegeDuration"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerAttestationPoint"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerPostconfirmationPoint"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingContract","outputs":[{"internalType":"contract IMovementStaking","name":"","type":"address"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment[]","name":"superBlockCommitments","type":"tuple[]","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitBatchSuperBlockCommitment"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitSuperBlockCommitment"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"superBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"versionedPostconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getPostconfirmerPrivilegeDuration()":{"returns":{"_0":"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"details":"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setAcceptingEpoch(uint256)":{"params":{"newEpoch":"The new accepting epoch value"}},"setMinCommitmentAgeForPostconfirmation(uint256)":{"params":{"_minCommitmentAgeForPostconfirmation":"New minimum commitment age "}},"setPostconfirmerDuration(uint256)":{"params":{"_postconfirmerDuration":"New postconfirmer term duration in time units"}},"setPostconfirmerPrivilegeDuration(uint256)":{"params":{"_postconfirmerPrivilegeDuration":"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"COMMITMENT_ADMIN()":{"notice":"The role that allows the commitment admin to set the accepting epoch"},"TRUSTED_ATTESTER()":{"notice":"The role that allows attesters to submit commitments"},"acceptGenesisCeremony()":{"notice":"Accepts the genesis ceremony."},"getAcceptingEpoch()":{"notice":"get the accepting epoch"},"getAttesterRewardPoints(uint256,address)":{"notice":"Gets the reward points for an attester in a given epoch"},"getAttesterStake(uint256,address)":{"notice":"Gets the stake for a given attester at a given epoch"},"getAttesterStakeForAcceptingEpoch(address)":{"notice":"Gets the stake for a given attester at the accepting epoch"},"getCommitmentByAttester(uint256,address)":{"notice":"Gets the commitment submitted by an attester for a given height"},"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":{"notice":"get the timestamp when a commitment was first seen"},"getCustodianStake(uint256,address)":{"notice":"Gets the stake for a given custodian for a given epoch"},"getEpochDuration()":{"notice":"Gets the epoch duration"},"getEpochStartTime()":{"notice":"Gets the time at which the current epoch started"},"getLastPostconfirmedSuperBlockHeight()":{"notice":"Gets the height of the last postconfirmed superblock"},"getPostconfirmedCommitment(uint256)":{"notice":"get the postconfirmed commitment for a given height"},"getPostconfirmer()":{"notice":"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness"},"getPostconfirmerDuration()":{"notice":"Gets the postconfirmer duration"},"getPostconfirmerPrivilegeDuration()":{"notice":"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"},"getPostconfirmerRewardPoints(uint256,address)":{"notice":"Gets the reward points for a postconfirmer in a given epoch"},"getPostconfirmerStartTime()":{"notice":"Gets the time at which the current postconfirmer's term started"},"getPresentEpoch()":{"notice":"get the present epoch"},"getStake(uint256,address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at a given epoch"},"getStakeForAcceptingEpoch(address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at the accepting epoch"},"getStakedAttestersForAcceptingEpoch()":{"notice":"Gets the attesters who have stake in the current accepting epoch"},"getSuperBlockHeightAssignedEpoch(uint256)":{"notice":"Gets the epoch assigned to a superblock height"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"notice":"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window"},"minCommitmentAgeForPostconfirmation()":{"notice":"Minimum time that must pass before a commitment can be postconfirmed"},"postconfirmSuperBlocksAndRollover()":{"notice":"postconfirm superblocks and rollover"},"postconfirmerDuration()":{"notice":"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period."},"postconfirmerPrivilegeDuration()":{"notice":"Max time the postconfirmer can be non-reactive to an honest superBlock commitment"},"setAcceptingEpoch(uint256)":{"notice":"Sets the accepting epoch to a new value (must be higher than current)"},"setMinCommitmentAgeForPostconfirmation(uint256)":{"notice":"Sets the minimum time that must pass before a commitment can be postconfirmed"},"setPostconfirmerDuration(uint256)":{"notice":"Sets the postconfirmer term duration, must be less than epoch duration"},"setPostconfirmerPrivilegeDuration(uint256)":{"notice":"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/settlement/PCP.sol":"PCP"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/settlement/PCP.sol":{"keccak256":"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714","urls":["bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b","dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp"],"license":"UNLICENSED"},"src/settlement/PCPStorage.sol":{"keccak256":"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1","urls":["bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff","dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss"],"license":"UNLICENSED"},"src/settlement/interfaces/IPCP.sol":{"keccak256":"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89","urls":["bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f","dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg"],"license":"UNLICENSED"},"src/settlement/settlement/BaseSettlement.sol":{"keccak256":"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a","urls":["bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e","dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":60268,"contract":"src/settlement/PCP.sol:PCP","label":"stakingContract","offset":0,"slot":"0","type":"t_contract(IMovementStaking)62796"},{"astId":60270,"contract":"src/settlement/PCP.sol:PCP","label":"moveTokenAddress","offset":0,"slot":"1","type":"t_address"},{"astId":60272,"contract":"src/settlement/PCP.sol:PCP","label":"leadingSuperBlockTolerance","offset":0,"slot":"2","type":"t_uint256"},{"astId":60274,"contract":"src/settlement/PCP.sol:PCP","label":"lastPostconfirmedSuperBlockHeight","offset":0,"slot":"3","type":"t_uint256"},{"astId":60277,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmerDuration","offset":0,"slot":"4","type":"t_uint256"},{"astId":60280,"contract":"src/settlement/PCP.sol:PCP","label":"minCommitmentAgeForPostconfirmation","offset":0,"slot":"5","type":"t_uint256"},{"astId":60283,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmerPrivilegeDuration","offset":0,"slot":"6","type":"t_uint256"},{"astId":60295,"contract":"src/settlement/PCP.sol:PCP","label":"superBlockHeightAssignedEpoch","offset":0,"slot":"7","type":"t_mapping(t_uint256,t_uint256)"},{"astId":60302,"contract":"src/settlement/PCP.sol:PCP","label":"commitments","offset":0,"slot":"8","type":"t_mapping(t_uint256,t_mapping(t_address,t_struct(SuperBlockCommitment)60291_storage))"},{"astId":60308,"contract":"src/settlement/PCP.sol:PCP","label":"commitmentStake","offset":0,"slot":"9","type":"t_mapping(t_uint256,t_mapping(t_bytes32,t_uint256))"},{"astId":60314,"contract":"src/settlement/PCP.sol:PCP","label":"commitmentFirstSeenAt","offset":0,"slot":"10","type":"t_mapping(t_uint256,t_mapping(t_bytes32,t_uint256))"},{"astId":60318,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmedBy","offset":0,"slot":"11","type":"t_mapping(t_uint256,t_address)"},{"astId":60322,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmedByPostconfirmer","offset":0,"slot":"12","type":"t_mapping(t_uint256,t_bool)"},{"astId":60326,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmedAtL1BlockHeight","offset":0,"slot":"13","type":"t_mapping(t_uint256,t_uint256)"},{"astId":60330,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmedAtL1BlockTimestamp","offset":0,"slot":"14","type":"t_mapping(t_uint256,t_uint256)"},{"astId":60334,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmedAtL1BlockHeightByPostconfirmer","offset":0,"slot":"15","type":"t_mapping(t_uint256,t_uint256)"},{"astId":60339,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmedSuperBlocks","offset":0,"slot":"16","type":"t_mapping(t_uint256,t_struct(SuperBlockCommitment)60291_storage)"},{"astId":60341,"contract":"src/settlement/PCP.sol:PCP","label":"openAttestationEnabled","offset":0,"slot":"17","type":"t_bool"},{"astId":60348,"contract":"src/settlement/PCP.sol:PCP","label":"versionedPostconfirmedSuperBlocks","offset":0,"slot":"18","type":"t_mapping(t_uint256,t_mapping(t_uint256,t_struct(SuperBlockCommitment)60291_storage))"},{"astId":60350,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmedSuperBlocksVersion","offset":0,"slot":"19","type":"t_uint256"},{"astId":60356,"contract":"src/settlement/PCP.sol:PCP","label":"attesterRewardPoints","offset":0,"slot":"20","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":60362,"contract":"src/settlement/PCP.sol:PCP","label":"postconfirmerRewardPoints","offset":0,"slot":"21","type":"t_mapping(t_uint256,t_mapping(t_address,t_uint256))"},{"astId":60364,"contract":"src/settlement/PCP.sol:PCP","label":"rewardPerAttestationPoint","offset":0,"slot":"22","type":"t_uint256"},{"astId":60366,"contract":"src/settlement/PCP.sol:PCP","label":"rewardPerPostconfirmationPoint","offset":0,"slot":"23","type":"t_uint256"},{"astId":60370,"contract":"src/settlement/PCP.sol:PCP","label":"__gap","offset":0,"slot":"24","type":"t_array(t_uint256)45_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)45_storage":{"encoding":"inplace","label":"uint256[45]","numberOfBytes":"1440","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(IMovementStaking)62796":{"encoding":"inplace","label":"contract IMovementStaking","numberOfBytes":"20"},"t_mapping(t_address,t_struct(SuperBlockCommitment)60291_storage)":{"encoding":"mapping","key":"t_address","label":"mapping(address => struct PCPStorage.SuperBlockCommitment)","numberOfBytes":"32","value":"t_struct(SuperBlockCommitment)60291_storage"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes32,t_uint256)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_uint256,t_address)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => address)","numberOfBytes":"32","value":"t_address"},"t_mapping(t_uint256,t_bool)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_uint256,t_mapping(t_address,t_struct(SuperBlockCommitment)60291_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment))","numberOfBytes":"32","value":"t_mapping(t_address,t_struct(SuperBlockCommitment)60291_storage)"},"t_mapping(t_uint256,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_uint256,t_mapping(t_bytes32,t_uint256))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(bytes32 => uint256))","numberOfBytes":"32","value":"t_mapping(t_bytes32,t_uint256)"},"t_mapping(t_uint256,t_mapping(t_uint256,t_struct(SuperBlockCommitment)60291_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(uint256 => struct PCPStorage.SuperBlockCommitment))","numberOfBytes":"32","value":"t_mapping(t_uint256,t_struct(SuperBlockCommitment)60291_storage)"},"t_mapping(t_uint256,t_struct(SuperBlockCommitment)60291_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct PCPStorage.SuperBlockCommitment)","numberOfBytes":"32","value":"t_struct(SuperBlockCommitment)60291_storage"},"t_mapping(t_uint256,t_uint256)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_struct(SuperBlockCommitment)60291_storage":{"encoding":"inplace","label":"struct PCPStorage.SuperBlockCommitment","numberOfBytes":"96","members":[{"astId":60286,"contract":"src/settlement/PCP.sol:PCP","label":"height","offset":0,"slot":"0","type":"t_uint256"},{"astId":60288,"contract":"src/settlement/PCP.sol:PCP","label":"commitment","offset":0,"slot":"1","type":"t_bytes32"},{"astId":60290,"contract":"src/settlement/PCP.sol:PCP","label":"blockId","offset":0,"slot":"2","type":"t_bytes32"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/settlement/PCP.sol","id":60259,"exportedSymbols":{"BaseSettlement":[60525],"EnumerableSet":[50663],"IMovementStaking":[62796],"IPCP":[60470],"Initializable":[39702],"MovementStaking":[62379],"PCP":[60258],"PCPStorage":[60371],"ReentrancyGuard":[44753]},"nodeType":"SourceUnit","src":"39:35067:110","nodes":[{"id":58478,"nodeType":"PragmaDirective","src":"39:24:110","nodes":[],"literals":["solidity","^","0.8",".13"]},{"id":58480,"nodeType":"ImportDirective","src":"65:86:110","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol","file":"@openzeppelin/contracts/utils/structs/EnumerableSet.sol","nameLocation":"-1:-1:-1","scope":60259,"sourceUnit":50664,"symbolAliases":[{"foreign":{"id":58479,"name":"EnumerableSet","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50663,"src":"73:13:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58482,"nodeType":"ImportDirective","src":"152:96:110","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":60259,"sourceUnit":39703,"symbolAliases":[{"foreign":{"id":58481,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39702,"src":"160:13:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58485,"nodeType":"ImportDirective","src":"249:81:110","nodes":[],"absolutePath":"src/staking/MovementStaking.sol","file":"../staking/MovementStaking.sol","nameLocation":"-1:-1:-1","scope":60259,"sourceUnit":62380,"symbolAliases":[{"foreign":{"id":58483,"name":"MovementStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62379,"src":"257:15:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":58484,"name":"IMovementStaking","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":62796,"src":"274:16:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58487,"nodeType":"ImportDirective","src":"331:44:110","nodes":[],"absolutePath":"src/settlement/PCPStorage.sol","file":"./PCPStorage.sol","nameLocation":"-1:-1:-1","scope":60259,"sourceUnit":60372,"symbolAliases":[{"foreign":{"id":58486,"name":"PCPStorage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60371,"src":"339:10:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58489,"nodeType":"ImportDirective","src":"376:63:110","nodes":[],"absolutePath":"src/settlement/settlement/BaseSettlement.sol","file":"./settlement/BaseSettlement.sol","nameLocation":"-1:-1:-1","scope":60259,"sourceUnit":60526,"symbolAliases":[{"foreign":{"id":58488,"name":"BaseSettlement","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60525,"src":"384:14:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58491,"nodeType":"ImportDirective","src":"440:43:110","nodes":[],"absolutePath":"src/settlement/interfaces/IPCP.sol","file":"./interfaces/IPCP.sol","nameLocation":"-1:-1:-1","scope":60259,"sourceUnit":60471,"symbolAliases":[{"foreign":{"id":58490,"name":"IPCP","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60470,"src":"448:4:110","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":58492,"nodeType":"ImportDirective","src":"484:59:110","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol","file":"@openzeppelin/contracts/utils/ReentrancyGuard.sol","nameLocation":"-1:-1:-1","scope":60259,"sourceUnit":44754,"symbolAliases":[],"unitAlias":""},{"id":60258,"nodeType":"ContractDefinition","src":"545:34560:110","nodes":[{"id":58505,"nodeType":"VariableDeclaration","src":"654:72:110","nodes":[],"baseFunctions":[60469],"constant":true,"functionSelector":"80e460f0","mutability":"constant","name":"COMMITMENT_ADMIN","nameLocation":"678:16:110","scope":60258,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":58501,"name":"bytes32","nodeType":"ElementaryTypeName","src":"654:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"434f4d4d49544d454e545f41444d494e","id":58503,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"707:18:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_db2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c","typeString":"literal_string \"COMMITMENT_ADMIN\""},"value":"COMMITMENT_ADMIN"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c","typeString":"literal_string \"COMMITMENT_ADMIN\""}],"id":58502,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"697:9:110","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":58504,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"697:29:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":58510,"nodeType":"VariableDeclaration","src":"764:72:110","nodes":[],"baseFunctions":[60463],"constant":true,"functionSelector":"5db916ab","mutability":"constant","name":"TRUSTED_ATTESTER","nameLocation":"788:16:110","scope":60258,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":58506,"name":"bytes32","nodeType":"ElementaryTypeName","src":"764:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"value":{"arguments":[{"hexValue":"545255535445445f4154544553544552","id":58508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"817:18:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18","typeString":"literal_string \"TRUSTED_ATTESTER\""},"value":"TRUSTED_ATTESTER"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18","typeString":"literal_string \"TRUSTED_ATTESTER\""}],"id":58507,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"807:9:110","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":58509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"807:29:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"public"},{"id":58513,"nodeType":"ErrorDefinition","src":"923:37:110","nodes":[],"documentation":{"id":58511,"nodeType":"StructuredDocumentation","src":"843:75:110","text":"@notice Error thrown when postconfirmer term is greater than 256 blocks"},"errorSelector":"38d443c8","name":"PostconfirmerDurationTooLong","nameLocation":"929:28:110","parameters":{"id":58512,"nodeType":"ParameterList","parameters":[],"src":"957:2:110"}},{"id":58516,"nodeType":"ErrorDefinition","src":"1051:45:110","nodes":[],"documentation":{"id":58514,"nodeType":"StructuredDocumentation","src":"966:80:110","text":"@notice Error thrown when postconfirmer term is too large for epoch duration"},"errorSelector":"60bc402f","name":"PostconfirmerDurationTooLongForEpoch","nameLocation":"1057:36:110","parameters":{"id":58515,"nodeType":"ParameterList","parameters":[],"src":"1093:2:110"}},{"id":58519,"nodeType":"ErrorDefinition","src":"1190:51:110","nodes":[],"documentation":{"id":58517,"nodeType":"StructuredDocumentation","src":"1102:83:110","text":"@notice Error thrown when minimum commitment age is greater than epoch duration"},"errorSelector":"a7075e5f","name":"minCommitmentAgeForPostconfirmationTooLong","nameLocation":"1196:42:110","parameters":{"id":58518,"nodeType":"ParameterList","parameters":[],"src":"1238:2:110"}},{"id":58522,"nodeType":"ErrorDefinition","src":"1354:46:110","nodes":[],"documentation":{"id":58520,"nodeType":"StructuredDocumentation","src":"1247:102:110","text":"@notice Error thrown when maximum postconfirmer non-reactivity time is greater than epoch duration"},"errorSelector":"3c9f1a53","name":"postconfirmerPrivilegeDurationTooLong","nameLocation":"1360:37:110","parameters":{"id":58521,"nodeType":"ParameterList","parameters":[],"src":"1397:2:110"}},{"id":58542,"nodeType":"FunctionDefinition","src":"1623:237:110","nodes":[],"body":{"id":58541,"nodeType":"Block","src":"1677:183:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":58529,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39114,"src":"1716:18:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":58530,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1736:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":58531,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1740:6:110","memberName":"sender","nodeType":"MemberAccess","src":"1736:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":58528,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39202,"src":"1708:7:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":58532,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1708:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e4c59","id":58533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1761:36:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""},"value":"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""}],"id":58527,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1687:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1687:120:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58535,"nodeType":"ExpressionStatement","src":"1687:120:110"},{"expression":{"arguments":[{"id":58537,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"1827:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":58538,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58524,"src":"1845:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":58536,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39276,"src":"1817:9:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":58539,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1817:36:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58540,"nodeType":"ExpressionStatement","src":"1817:36:110"}]},"functionSelector":"949d7c2a","implemented":true,"kind":"function","modifiers":[],"name":"grantCommitmentAdmin","nameLocation":"1632:20:110","parameters":{"id":58525,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58524,"mutability":"mutable","name":"account","nameLocation":"1661:7:110","nodeType":"VariableDeclaration","scope":58542,"src":"1653:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58523,"name":"address","nodeType":"ElementaryTypeName","src":"1653:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1652:17:110"},"returnParameters":{"id":58526,"nodeType":"ParameterList","parameters":[],"src":"1677:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58578,"nodeType":"FunctionDefinition","src":"1866:326:110","nodes":[],"body":{"id":58577,"nodeType":"Block","src":"1935:257:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":58550,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39114,"src":"1974:18:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":58551,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"1994:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":58552,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"1998:6:110","memberName":"sender","nodeType":"MemberAccess","src":"1994:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":58549,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39202,"src":"1966:7:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":58553,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1966:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e4c59","id":58554,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"2019:36:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""},"value":"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1f7b9adf09d2de8e9f277a155b3d23da5323d167b45a06ca50e252fefeb24539","typeString":"literal_string \"ADD_COMMITMENT_ADMIN_IS_ADMIN_ONLY\""}],"id":58548,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"1945:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58555,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"1945:120:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58556,"nodeType":"ExpressionStatement","src":"1945:120:110"},{"body":{"id":58575,"nodeType":"Block","src":"2121:65:110","statements":[{"expression":{"arguments":[{"id":58569,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"2145:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":58570,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58545,"src":"2163:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":58572,"indexExpression":{"id":58571,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58558,"src":"2172:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2163:11:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":58568,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39276,"src":"2135:9:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":58573,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2135:40:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58574,"nodeType":"ExpressionStatement","src":"2135:40:110"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58561,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58558,"src":"2095:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":58562,"name":"accounts","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58545,"src":"2099:8:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":58563,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2108:6:110","memberName":"length","nodeType":"MemberAccess","src":"2099:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2095:19:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58576,"initializationExpression":{"assignments":[58558],"declarations":[{"constant":false,"id":58558,"mutability":"mutable","name":"i","nameLocation":"2088:1:110","nodeType":"VariableDeclaration","scope":58576,"src":"2080:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58557,"name":"uint256","nodeType":"ElementaryTypeName","src":"2080:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58560,"initialValue":{"hexValue":"30","id":58559,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2092:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2080:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":58566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2116:3:110","subExpression":{"id":58565,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58558,"src":"2116:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58567,"nodeType":"ExpressionStatement","src":"2116:3:110"},"nodeType":"ForStatement","src":"2075:111:110"}]},"functionSelector":"4b47d955","implemented":true,"kind":"function","modifiers":[],"name":"batchGrantCommitmentAdmin","nameLocation":"1875:25:110","parameters":{"id":58546,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58545,"mutability":"mutable","name":"accounts","nameLocation":"1918:8:110","nodeType":"VariableDeclaration","scope":58578,"src":"1901:25:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":58543,"name":"address","nodeType":"ElementaryTypeName","src":"1901:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":58544,"nodeType":"ArrayTypeName","src":"1901:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"1900:27:110"},"returnParameters":{"id":58547,"nodeType":"ParameterList","parameters":[],"src":"1935:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58592,"nodeType":"FunctionDefinition","src":"2198:136:110","nodes":[],"body":{"id":58591,"nodeType":"Block","src":"2280:54:110","nodes":[],"statements":[{"expression":{"arguments":[{"id":58587,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58510,"src":"2300:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":58588,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58580,"src":"2318:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":58586,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39276,"src":"2290:9:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":58589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2290:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58590,"nodeType":"ExpressionStatement","src":"2290:37:110"}]},"functionSelector":"81df1746","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":58583,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"2262:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":58584,"kind":"modifierInvocation","modifierName":{"id":58582,"name":"onlyRole","nameLocations":["2253:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"2253:8:110"},"nodeType":"ModifierInvocation","src":"2253:26:110"}],"name":"grantTrustedAttester","nameLocation":"2207:20:110","parameters":{"id":58581,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58580,"mutability":"mutable","name":"attester","nameLocation":"2236:8:110","nodeType":"VariableDeclaration","scope":58592,"src":"2228:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58579,"name":"address","nodeType":"ElementaryTypeName","src":"2228:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2227:18:110"},"returnParameters":{"id":58585,"nodeType":"ParameterList","parameters":[],"src":"2280:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58622,"nodeType":"FunctionDefinition","src":"2340:226:110","nodes":[],"body":{"id":58621,"nodeType":"Block","src":"2437:129:110","nodes":[],"statements":[{"body":{"id":58619,"nodeType":"Block","src":"2494:66:110","statements":[{"expression":{"arguments":[{"id":58613,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58510,"src":"2518:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"baseExpression":{"id":58614,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58595,"src":"2536:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":58616,"indexExpression":{"id":58615,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58602,"src":"2546:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"2536:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":58612,"name":"grantRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39276,"src":"2508:9:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$","typeString":"function (bytes32,address)"}},"id":58617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"2508:41:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58618,"nodeType":"ExpressionStatement","src":"2508:41:110"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58605,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58602,"src":"2467:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":58606,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58595,"src":"2471:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":58607,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"2481:6:110","memberName":"length","nodeType":"MemberAccess","src":"2471:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"2467:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58620,"initializationExpression":{"assignments":[58602],"declarations":[{"constant":false,"id":58602,"mutability":"mutable","name":"i","nameLocation":"2460:1:110","nodeType":"VariableDeclaration","scope":58620,"src":"2452:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58601,"name":"uint256","nodeType":"ElementaryTypeName","src":"2452:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58604,"initialValue":{"hexValue":"30","id":58603,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2464:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"2452:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":58610,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"2489:3:110","subExpression":{"id":58609,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58602,"src":"2489:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58611,"nodeType":"ExpressionStatement","src":"2489:3:110"},"nodeType":"ForStatement","src":"2447:113:110"}]},"functionSelector":"cf6772ad","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":58598,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"2419:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":58599,"kind":"modifierInvocation","modifierName":{"id":58597,"name":"onlyRole","nameLocations":["2410:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"2410:8:110"},"nodeType":"ModifierInvocation","src":"2410:26:110"}],"name":"batchGrantTrustedAttester","nameLocation":"2349:25:110","parameters":{"id":58596,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58595,"mutability":"mutable","name":"attesters","nameLocation":"2392:9:110","nodeType":"VariableDeclaration","scope":58622,"src":"2375:26:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":58593,"name":"address","nodeType":"ElementaryTypeName","src":"2375:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":58594,"nodeType":"ArrayTypeName","src":"2375:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"2374:28:110"},"returnParameters":{"id":58600,"nodeType":"ParameterList","parameters":[],"src":"2437:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58704,"nodeType":"FunctionDefinition","src":"2789:1624:110","nodes":[],"body":{"id":58703,"nodeType":"Block","src":"3215:1198:110","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":58643,"name":"__BaseSettlement_init_unchained","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60513,"src":"3225:31:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":58644,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3225:33:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58645,"nodeType":"ExpressionStatement","src":"3225:33:110"},{"expression":{"id":58648,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58646,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"3268:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58647,"name":"_stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58625,"src":"3286:16:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"src":"3268:34:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58649,"nodeType":"ExpressionStatement","src":"3268:34:110"},{"expression":{"id":58652,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58650,"name":"leadingSuperBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60272,"src":"3312:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58651,"name":"_leadingSuperBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58629,"src":"3341:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3312:56:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58653,"nodeType":"ExpressionStatement","src":"3312:56:110"},{"expression":{"id":58656,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58654,"name":"lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60274,"src":"3378:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58655,"name":"_lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58627,"src":"3414:34:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3378:70:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58657,"nodeType":"ExpressionStatement","src":"3378:70:110"},{"expression":{"arguments":[{"id":58661,"name":"_epochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58631,"src":"3489:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":58662,"name":"_custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58634,"src":"3505:11:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"expression":{"id":58658,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"3458:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3474:14:110","memberName":"registerDomain","nodeType":"MemberAccess","referencedDeclaration":62526,"src":"3458:30:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$returns$__$","typeString":"function (uint256,address[] memory) external"}},"id":58663,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3458:59:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58664,"nodeType":"ExpressionStatement","src":"3458:59:110"},{"expression":{"arguments":[{"expression":{"id":58666,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3548:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":58667,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3552:6:110","memberName":"sender","nodeType":"MemberAccess","src":"3548:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":58665,"name":"grantCommitmentAdmin","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58542,"src":"3527:20:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":58668,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3527:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58669,"nodeType":"ExpressionStatement","src":"3527:32:110"},{"expression":{"arguments":[{"expression":{"id":58671,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3590:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":58672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3594:6:110","memberName":"sender","nodeType":"MemberAccess","src":"3590:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":58670,"name":"grantTrustedAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58592,"src":"3569:20:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":58673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3569:32:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58674,"nodeType":"ExpressionStatement","src":"3569:32:110"},{"expression":{"id":58677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58675,"name":"postconfirmerDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60277,"src":"3611:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58676,"name":"_postconfirmerDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58636,"src":"3635:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3611:46:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58678,"nodeType":"ExpressionStatement","src":"3611:46:110"},{"expression":{"id":58681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58679,"name":"moveTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60270,"src":"3667:16:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58680,"name":"_moveTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58638,"src":"3686:17:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"3667:36:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":58682,"nodeType":"ExpressionStatement","src":"3667:36:110"},{"expression":{"id":58687,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58683,"name":"minCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60280,"src":"4204:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58686,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58684,"name":"_epochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58631,"src":"4242:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":58685,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4259:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"4242:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4204:57:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58688,"nodeType":"ExpressionStatement","src":"4204:57:110"},{"expression":{"id":58693,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58689,"name":"postconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60283,"src":"4271:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58692,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58690,"name":"_epochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58631,"src":"4304:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"3130","id":58691,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4321:2:110","typeDescriptions":{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"},"value":"10"},"src":"4304:19:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4271:52:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58694,"nodeType":"ExpressionStatement","src":"4271:52:110"},{"expression":{"id":58697,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58695,"name":"rewardPerAttestationPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60364,"src":"4333:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":58696,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4361:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4333:29:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58698,"nodeType":"ExpressionStatement","src":"4333:29:110"},{"expression":{"id":58701,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58699,"name":"rewardPerPostconfirmationPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60366,"src":"4372:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":58700,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4405:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"4372:34:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58702,"nodeType":"ExpressionStatement","src":"4372:34:110"}]},"functionSelector":"107e21ca","implemented":true,"kind":"function","modifiers":[{"id":58641,"kind":"modifierInvocation","modifierName":{"id":58640,"name":"initializer","nameLocations":["3203:11:110"],"nodeType":"IdentifierPath","referencedDeclaration":39556,"src":"3203:11:110"},"nodeType":"ModifierInvocation","src":"3203:11:110"}],"name":"initialize","nameLocation":"2798:10:110","parameters":{"id":58639,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58625,"mutability":"mutable","name":"_stakingContract","nameLocation":"2835:16:110","nodeType":"VariableDeclaration","scope":58704,"src":"2818:33:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"},"typeName":{"id":58624,"nodeType":"UserDefinedTypeName","pathNode":{"id":58623,"name":"IMovementStaking","nameLocations":["2818:16:110"],"nodeType":"IdentifierPath","referencedDeclaration":62796,"src":"2818:16:110"},"referencedDeclaration":62796,"src":"2818:16:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"visibility":"internal"},{"constant":false,"id":58627,"mutability":"mutable","name":"_lastPostconfirmedSuperBlockHeight","nameLocation":"2869:34:110","nodeType":"VariableDeclaration","scope":58704,"src":"2861:42:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58626,"name":"uint256","nodeType":"ElementaryTypeName","src":"2861:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":58629,"mutability":"mutable","name":"_leadingSuperBlockTolerance","nameLocation":"2921:27:110","nodeType":"VariableDeclaration","scope":58704,"src":"2913:35:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58628,"name":"uint256","nodeType":"ElementaryTypeName","src":"2913:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":58631,"mutability":"mutable","name":"_epochDuration","nameLocation":"2966:14:110","nodeType":"VariableDeclaration","scope":58704,"src":"2958:22:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58630,"name":"uint256","nodeType":"ElementaryTypeName","src":"2958:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":58634,"mutability":"mutable","name":"_custodians","nameLocation":"3024:11:110","nodeType":"VariableDeclaration","scope":58704,"src":"3007:28:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":58632,"name":"address","nodeType":"ElementaryTypeName","src":"3007:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":58633,"nodeType":"ArrayTypeName","src":"3007:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"},{"constant":false,"id":58636,"mutability":"mutable","name":"_postconfirmerDuration","nameLocation":"3053:22:110","nodeType":"VariableDeclaration","scope":58704,"src":"3045:30:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58635,"name":"uint256","nodeType":"ElementaryTypeName","src":"3045:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":58638,"mutability":"mutable","name":"_moveTokenAddress","nameLocation":"3110:17:110","nodeType":"VariableDeclaration","scope":58704,"src":"3102:25:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58637,"name":"address","nodeType":"ElementaryTypeName","src":"3102:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2808:387:110"},"returnParameters":{"id":58642,"nodeType":"ParameterList","parameters":[],"src":"3215:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58723,"nodeType":"FunctionDefinition","src":"4465:195:110","nodes":[],"body":{"id":58722,"nodeType":"Block","src":"4505:155:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":58710,"name":"DEFAULT_ADMIN_ROLE","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39114,"src":"4531:18:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":58711,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4551:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":58712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4555:6:110","memberName":"sender","nodeType":"MemberAccess","src":"4551:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":58709,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39202,"src":"4523:7:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":58713,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4523:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e5f4f4e4c59","id":58714,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4564:39:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_b077b31285a16307062fcb4fde0e57e8246ea6dc3cdd1c5dd5880d32a26fbf54","typeString":"literal_string \"ACCEPT_GENESIS_CEREMONY_IS_ADMIN_ONLY\""},"value":"ACCEPT_GENESIS_CEREMONY_IS_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b077b31285a16307062fcb4fde0e57e8246ea6dc3cdd1c5dd5880d32a26fbf54","typeString":"literal_string \"ACCEPT_GENESIS_CEREMONY_IS_ADMIN_ONLY\""}],"id":58708,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"4515:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":58715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4515:89:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58716,"nodeType":"ExpressionStatement","src":"4515:89:110"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":58717,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"4614:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58719,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4630:21:110","memberName":"acceptGenesisCeremony","nodeType":"MemberAccess","referencedDeclaration":62529,"src":"4614:37:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":58720,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4614:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":58721,"nodeType":"ExpressionStatement","src":"4614:39:110"}]},"documentation":{"id":58705,"nodeType":"StructuredDocumentation","src":"4419:41:110","text":"@notice Accepts the genesis ceremony."},"functionSelector":"92a2ebf3","implemented":true,"kind":"function","modifiers":[],"name":"acceptGenesisCeremony","nameLocation":"4474:21:110","parameters":{"id":58706,"nodeType":"ParameterList","parameters":[],"src":"4495:2:110"},"returnParameters":{"id":58707,"nodeType":"ParameterList","parameters":[],"src":"4505:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58757,"nodeType":"FunctionDefinition","src":"4837:570:110","nodes":[],"body":{"id":58756,"nodeType":"Block","src":"4937:470:110","nodes":[],"statements":[{"assignments":[58733],"declarations":[{"constant":false,"id":58733,"mutability":"mutable","name":"epochDuration","nameLocation":"5041:13:110","nodeType":"VariableDeclaration","scope":58756,"src":"5033:21:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58732,"name":"uint256","nodeType":"ElementaryTypeName","src":"5033:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58741,"initialValue":{"arguments":[{"arguments":[{"id":58738,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5098:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58737,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5090:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58736,"name":"address","nodeType":"ElementaryTypeName","src":"5090:7:110","typeDescriptions":{}}},"id":58739,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5090:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58734,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"5057:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5073:16:110","memberName":"getEpochDuration","nodeType":"MemberAccess","referencedDeclaration":62788,"src":"5057:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5057:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"5033:71:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":58742,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5229:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":58743,"name":"_postconfirmerDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58726,"src":"5233:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5229:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":58745,"name":"epochDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58733,"src":"5259:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5229:43:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58751,"nodeType":"IfStatement","src":"5225:120:110","trueBody":{"id":58750,"nodeType":"Block","src":"5275:70:110","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":58747,"name":"PostconfirmerDurationTooLongForEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58516,"src":"5296:36:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":58748,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5296:38:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":58749,"nodeType":"RevertStatement","src":"5289:45:110"}]}},{"expression":{"id":58754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58752,"name":"postconfirmerDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60277,"src":"5354:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58753,"name":"_postconfirmerDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58726,"src":"5378:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5354:46:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58755,"nodeType":"ExpressionStatement","src":"5354:46:110"}]},"documentation":{"id":58724,"nodeType":"StructuredDocumentation","src":"4666:166:110","text":"@notice Sets the postconfirmer term duration, must be less than epoch duration\n @param _postconfirmerDuration New postconfirmer term duration in time units"},"functionSelector":"3d645927","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":58729,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"4919:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":58730,"kind":"modifierInvocation","modifierName":{"id":58728,"name":"onlyRole","nameLocations":["4910:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"4910:8:110"},"nodeType":"ModifierInvocation","src":"4910:26:110"}],"name":"setPostconfirmerDuration","nameLocation":"4846:24:110","parameters":{"id":58727,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58726,"mutability":"mutable","name":"_postconfirmerDuration","nameLocation":"4879:22:110","nodeType":"VariableDeclaration","scope":58757,"src":"4871:30:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58725,"name":"uint256","nodeType":"ElementaryTypeName","src":"4871:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"4870:32:110"},"returnParameters":{"id":58731,"nodeType":"ParameterList","parameters":[],"src":"4937:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58765,"nodeType":"FunctionDefinition","src":"5413:111:110","nodes":[],"body":{"id":58764,"nodeType":"Block","src":"5479:45:110","nodes":[],"statements":[{"expression":{"id":58762,"name":"postconfirmerDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60277,"src":"5496:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58761,"id":58763,"nodeType":"Return","src":"5489:28:110"}]},"baseFunctions":[60407],"functionSelector":"1241ebe3","implemented":true,"kind":"function","modifiers":[],"name":"getPostconfirmerDuration","nameLocation":"5422:24:110","parameters":{"id":58758,"nodeType":"ParameterList","parameters":[],"src":"5446:2:110"},"returnParameters":{"id":58761,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58760,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58765,"src":"5470:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58759,"name":"uint256","nodeType":"ElementaryTypeName","src":"5470:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5469:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58796,"nodeType":"FunctionDefinition","src":"5787:464:110","nodes":[],"body":{"id":58795,"nodeType":"Block","src":"5905:346:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58785,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58774,"name":"_postconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58768,"src":"5973:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58784,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":58779,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6049:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58778,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6041:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58777,"name":"address","nodeType":"ElementaryTypeName","src":"6041:7:110","typeDescriptions":{}}},"id":58780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6041:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58775,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"6008:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6024:16:110","memberName":"getEpochDuration","nodeType":"MemberAccess","referencedDeclaration":62788,"src":"6008:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58781,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6008:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":58782,"name":"getMinCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58844,"src":"6058:38:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":58783,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6058:40:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6008:90:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5973:125:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58790,"nodeType":"IfStatement","src":"5969:202:110","trueBody":{"id":58789,"nodeType":"Block","src":"6100:71:110","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":58786,"name":"postconfirmerPrivilegeDurationTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58522,"src":"6121:37:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":58787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6121:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":58788,"nodeType":"RevertStatement","src":"6114:46:110"}]}},{"expression":{"id":58793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58791,"name":"postconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60283,"src":"6180:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58792,"name":"_postconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58768,"src":"6213:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6180:64:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58794,"nodeType":"ExpressionStatement","src":"6180:64:110"}]},"documentation":{"id":58766,"nodeType":"StructuredDocumentation","src":"5530:252:110","text":"@notice Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\n @param _postconfirmerPrivilegeDuration maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment"},"functionSelector":"da7d28b6","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":58771,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"5887:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":58772,"kind":"modifierInvocation","modifierName":{"id":58770,"name":"onlyRole","nameLocations":["5878:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"5878:8:110"},"nodeType":"ModifierInvocation","src":"5878:26:110"}],"name":"setPostconfirmerPrivilegeDuration","nameLocation":"5796:33:110","parameters":{"id":58769,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58768,"mutability":"mutable","name":"_postconfirmerPrivilegeDuration","nameLocation":"5838:31:110","nodeType":"VariableDeclaration","scope":58796,"src":"5830:39:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58767,"name":"uint256","nodeType":"ElementaryTypeName","src":"5830:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5829:41:110"},"returnParameters":{"id":58773,"nodeType":"ParameterList","parameters":[],"src":"5905:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58805,"nodeType":"FunctionDefinition","src":"6474:129:110","nodes":[],"body":{"id":58804,"nodeType":"Block","src":"6549:54:110","nodes":[],"statements":[{"expression":{"id":58802,"name":"postconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60283,"src":"6566:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58801,"id":58803,"nodeType":"Return","src":"6559:37:110"}]},"documentation":{"id":58797,"nodeType":"StructuredDocumentation","src":"6257:212:110","text":"@notice Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\n @return The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"},"functionSelector":"028e490a","implemented":true,"kind":"function","modifiers":[],"name":"getPostconfirmerPrivilegeDuration","nameLocation":"6483:33:110","parameters":{"id":58798,"nodeType":"ParameterList","parameters":[],"src":"6516:2:110"},"returnParameters":{"id":58801,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58800,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58805,"src":"6540:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58799,"name":"uint256","nodeType":"ElementaryTypeName","src":"6540:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6539:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58836,"nodeType":"FunctionDefinition","src":"7053:533:110","nodes":[],"body":{"id":58835,"nodeType":"Block","src":"7181:405:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58825,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58814,"name":"_minCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58808,"src":"7293:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58824,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":58819,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7374:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58818,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7366:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58817,"name":"address","nodeType":"ElementaryTypeName","src":"7366:7:110","typeDescriptions":{}}},"id":58820,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7366:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58815,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"7333:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58816,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7349:16:110","memberName":"getEpochDuration","nodeType":"MemberAccess","referencedDeclaration":62788,"src":"7333:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58821,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7333:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":58822,"name":"getPostconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58805,"src":"7383:33:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":58823,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7383:35:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7333:85:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7293:125:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58830,"nodeType":"IfStatement","src":"7289:207:110","trueBody":{"id":58829,"nodeType":"Block","src":"7420:76:110","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":58826,"name":"minCommitmentAgeForPostconfirmationTooLong","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58519,"src":"7441:42:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":58827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7441:44:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":58828,"nodeType":"RevertStatement","src":"7434:51:110"}]}},{"expression":{"id":58833,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58831,"name":"minCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60280,"src":"7505:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58832,"name":"_minCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58808,"src":"7543:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7505:74:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":58834,"nodeType":"ExpressionStatement","src":"7505:74:110"}]},"documentation":{"id":58806,"nodeType":"StructuredDocumentation","src":"6609:169:110","text":"@notice Sets the minimum time that must pass before a commitment can be postconfirmed\n @param _minCommitmentAgeForPostconfirmation New minimum commitment age "},"functionSelector":"1f83e2a3","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":58811,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"7163:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":58812,"kind":"modifierInvocation","modifierName":{"id":58810,"name":"onlyRole","nameLocations":["7154:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"7154:8:110"},"nodeType":"ModifierInvocation","src":"7154:26:110"}],"name":"setMinCommitmentAgeForPostconfirmation","nameLocation":"7062:38:110","parameters":{"id":58809,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58808,"mutability":"mutable","name":"_minCommitmentAgeForPostconfirmation","nameLocation":"7109:36:110","nodeType":"VariableDeclaration","scope":58836,"src":"7101:44:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58807,"name":"uint256","nodeType":"ElementaryTypeName","src":"7101:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7100:46:110"},"returnParameters":{"id":58813,"nodeType":"ParameterList","parameters":[],"src":"7181:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58844,"nodeType":"FunctionDefinition","src":"7592:139:110","nodes":[],"body":{"id":58843,"nodeType":"Block","src":"7672:59:110","nodes":[],"statements":[{"expression":{"id":58841,"name":"minCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60280,"src":"7689:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58840,"id":58842,"nodeType":"Return","src":"7682:42:110"}]},"functionSelector":"ab208ebd","implemented":true,"kind":"function","modifiers":[],"name":"getMinCommitmentAgeForPostconfirmation","nameLocation":"7601:38:110","parameters":{"id":58837,"nodeType":"ParameterList","parameters":[],"src":"7639:2:110"},"returnParameters":{"id":58840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58839,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58844,"src":"7663:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58838,"name":"uint256","nodeType":"ElementaryTypeName","src":"7663:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7662:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58857,"nodeType":"FunctionDefinition","src":"7737:132:110","nodes":[],"body":{"id":58856,"nodeType":"Block","src":"7820:49:110","nodes":[],"statements":[{"expression":{"id":58854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":58852,"name":"openAttestationEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60341,"src":"7830:22:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":58853,"name":"enabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58846,"src":"7855:7:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"7830:32:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":58855,"nodeType":"ExpressionStatement","src":"7830:32:110"}]},"functionSelector":"d2526fef","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":58849,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"7802:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":58850,"kind":"modifierInvocation","modifierName":{"id":58848,"name":"onlyRole","nameLocations":["7793:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"7793:8:110"},"nodeType":"ModifierInvocation","src":"7793:26:110"}],"name":"setOpenAttestationEnabled","nameLocation":"7746:25:110","parameters":{"id":58847,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58846,"mutability":"mutable","name":"enabled","nameLocation":"7777:7:110","nodeType":"VariableDeclaration","scope":58857,"src":"7772:12:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":58845,"name":"bool","nodeType":"ElementaryTypeName","src":"7772:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7771:14:110"},"returnParameters":{"id":58851,"nodeType":"ParameterList","parameters":[],"src":"7820:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":58872,"nodeType":"FunctionDefinition","src":"8131:129:110","nodes":[],"body":{"id":58871,"nodeType":"Block","src":"8189:71:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":58867,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8247:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58866,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8239:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58865,"name":"address","nodeType":"ElementaryTypeName","src":"8239:7:110","typeDescriptions":{}}},"id":58868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8239:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58863,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"8206:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58864,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8222:16:110","memberName":"getEpochDuration","nodeType":"MemberAccess","referencedDeclaration":62788,"src":"8206:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58869,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8206:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58862,"id":58870,"nodeType":"Return","src":"8199:54:110"}]},"baseFunctions":[60401],"documentation":{"id":58858,"nodeType":"StructuredDocumentation","src":"8091:35:110","text":"@notice Gets the epoch duration"},"functionSelector":"5d3ea8f1","implemented":true,"kind":"function","modifiers":[],"name":"getEpochDuration","nameLocation":"8140:16:110","parameters":{"id":58859,"nodeType":"ParameterList","parameters":[],"src":"8156:2:110"},"returnParameters":{"id":58862,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58861,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58872,"src":"8180:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58860,"name":"uint256","nodeType":"ElementaryTypeName","src":"8180:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8179:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58897,"nodeType":"FunctionDefinition","src":"8331:207:110","nodes":[],"body":{"id":58896,"nodeType":"Block","src":"8390:148:110","nodes":[],"statements":[{"assignments":[58879],"declarations":[{"constant":false,"id":58879,"mutability":"mutable","name":"currentTime","nameLocation":"8408:11:110","nodeType":"VariableDeclaration","scope":58896,"src":"8400:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58878,"name":"uint256","nodeType":"ElementaryTypeName","src":"8400:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58882,"initialValue":{"expression":{"id":58880,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"8422:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":58881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8428:9:110","memberName":"timestamp","nodeType":"MemberAccess","src":"8422:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8400:37:110"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58894,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58883,"name":"currentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58879,"src":"8454:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58884,"name":"currentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58879,"src":"8469:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[{"arguments":[{"id":58889,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8524:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58888,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8516:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58887,"name":"address","nodeType":"ElementaryTypeName","src":"8516:7:110","typeDescriptions":{}}},"id":58890,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8516:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58885,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"8483:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58886,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8499:16:110","memberName":"getEpochDuration","nodeType":"MemberAccess","referencedDeclaration":62788,"src":"8483:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58891,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8483:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8469:61:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":58893,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"8468:63:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8454:77:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58877,"id":58895,"nodeType":"Return","src":"8447:84:110"}]},"documentation":{"id":58873,"nodeType":"StructuredDocumentation","src":"8266:60:110","text":"@notice Gets the time at which the current epoch started"},"functionSelector":"90879f64","implemented":true,"kind":"function","modifiers":[],"name":"getEpochStartTime","nameLocation":"8340:17:110","parameters":{"id":58874,"nodeType":"ParameterList","parameters":[],"src":"8357:2:110"},"returnParameters":{"id":58877,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58876,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58897,"src":"8381:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58875,"name":"uint256","nodeType":"ElementaryTypeName","src":"8381:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8380:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58911,"nodeType":"FunctionDefinition","src":"8574:133:110","nodes":[],"body":{"id":58910,"nodeType":"Block","src":"8631:76:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":58906,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8694:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58905,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8686:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58904,"name":"address","nodeType":"ElementaryTypeName","src":"8686:7:110","typeDescriptions":{}}},"id":58907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8686:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58902,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"8648:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8664:21:110","memberName":"getEpochByL1BlockTime","nodeType":"MemberAccess","referencedDeclaration":62536,"src":"8648:37:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58908,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8648:52:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58901,"id":58909,"nodeType":"Return","src":"8641:59:110"}]},"baseFunctions":[60438],"functionSelector":"37d7f58f","implemented":true,"kind":"function","modifiers":[],"name":"getPresentEpoch","nameLocation":"8583:15:110","parameters":{"id":58898,"nodeType":"ParameterList","parameters":[],"src":"8598:2:110"},"returnParameters":{"id":58901,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58900,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58911,"src":"8622:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58899,"name":"uint256","nodeType":"ElementaryTypeName","src":"8622:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8621:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58925,"nodeType":"FunctionDefinition","src":"8745:131:110","nodes":[],"body":{"id":58924,"nodeType":"Block","src":"8804:72:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":58920,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8863:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58919,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8855:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58918,"name":"address","nodeType":"ElementaryTypeName","src":"8855:7:110","typeDescriptions":{}}},"id":58921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8855:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58916,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"8821:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8837:17:110","memberName":"getAcceptingEpoch","nodeType":"MemberAccess","referencedDeclaration":62543,"src":"8821:33:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58922,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8821:48:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58915,"id":58923,"nodeType":"Return","src":"8814:55:110"}]},"baseFunctions":[60432],"functionSelector":"6c713af8","implemented":true,"kind":"function","modifiers":[],"name":"getAcceptingEpoch","nameLocation":"8754:17:110","parameters":{"id":58912,"nodeType":"ParameterList","parameters":[],"src":"8771:2:110"},"returnParameters":{"id":58915,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58914,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58925,"src":"8795:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58913,"name":"uint256","nodeType":"ElementaryTypeName","src":"8795:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8794:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58939,"nodeType":"FunctionDefinition","src":"8946:165:110","nodes":[],"body":{"id":58938,"nodeType":"Block","src":"9022:89:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":58934,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9098:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9090:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58932,"name":"address","nodeType":"ElementaryTypeName","src":"9090:7:110","typeDescriptions":{}}},"id":58935,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9090:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58930,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"9039:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9055:34:110","memberName":"getNextAcceptingEpochWithException","nodeType":"MemberAccess","referencedDeclaration":62550,"src":"9039:50:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9039:65:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58929,"id":58937,"nodeType":"Return","src":"9032:72:110"}]},"functionSelector":"3752d675","implemented":true,"kind":"function","modifiers":[],"name":"getNextAcceptingEpochWithException","nameLocation":"8955:34:110","parameters":{"id":58926,"nodeType":"ParameterList","parameters":[],"src":"8989:2:110"},"returnParameters":{"id":58929,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58928,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58939,"src":"9013:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58927,"name":"uint256","nodeType":"ElementaryTypeName","src":"9013:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9012:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":58970,"nodeType":"FunctionDefinition","src":"9197:414:110","nodes":[],"body":{"id":58969,"nodeType":"Block","src":"9264:347:110","nodes":[],"statements":[{"assignments":[58946],"declarations":[{"constant":false,"id":58946,"mutability":"mutable","name":"currentTime","nameLocation":"9282:11:110","nodeType":"VariableDeclaration","scope":58969,"src":"9274:19:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58945,"name":"uint256","nodeType":"ElementaryTypeName","src":"9274:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58949,"initialValue":{"expression":{"id":58947,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9296:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":58948,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9302:9:110","memberName":"timestamp","nodeType":"MemberAccess","src":"9296:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9274:37:110"},{"assignments":[58951],"declarations":[{"constant":false,"id":58951,"mutability":"mutable","name":"currentTimeCorrected","nameLocation":"9434:20:110","nodeType":"VariableDeclaration","scope":58969,"src":"9426:28:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58950,"name":"uint256","nodeType":"ElementaryTypeName","src":"9426:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58961,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58960,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58952,"name":"currentTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58946,"src":"9457:11:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"arguments":[{"arguments":[{"id":58957,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"9512:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"9504:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58955,"name":"address","nodeType":"ElementaryTypeName","src":"9504:7:110","typeDescriptions":{}}},"id":58958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9504:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58953,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"9471:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9487:16:110","memberName":"getEpochDuration","nodeType":"MemberAccess","referencedDeclaration":62788,"src":"9471:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":58959,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"9471:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9457:61:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"9426:92:110"},{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58962,"name":"currentTimeCorrected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58951,"src":"9535:20:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":58965,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":58963,"name":"currentTimeCorrected","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58951,"src":"9559:20:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"id":58964,"name":"postconfirmerDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60277,"src":"9582:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9559:44:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":58966,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9558:46:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9535:69:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":58944,"id":58968,"nodeType":"Return","src":"9528:76:110"}]},"documentation":{"id":58940,"nodeType":"StructuredDocumentation","src":"9117:75:110","text":"@notice Gets the time at which the current postconfirmer's term started"},"functionSelector":"5f4d642e","implemented":true,"kind":"function","modifiers":[],"name":"getPostconfirmerStartTime","nameLocation":"9206:25:110","parameters":{"id":58941,"nodeType":"ParameterList","parameters":[],"src":"9231:2:110"},"returnParameters":{"id":58944,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58943,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":58970,"src":"9255:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58942,"name":"uint256","nodeType":"ElementaryTypeName","src":"9255:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9254:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59031,"nodeType":"FunctionDefinition","src":"9951:929:110","nodes":[],"body":{"id":59030,"nodeType":"Block","src":"10009:871:110","nodes":[],"statements":[{"assignments":[58977],"declarations":[{"constant":false,"id":58977,"mutability":"mutable","name":"randSeed1","nameLocation":"10400:9:110","nodeType":"VariableDeclaration","scope":59030,"src":"10392:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58976,"name":"uint256","nodeType":"ElementaryTypeName","src":"10392:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58980,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":58978,"name":"getPostconfirmerStartTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58970,"src":"10412:25:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":58979,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10412:27:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10392:47:110"},{"assignments":[58982],"declarations":[{"constant":false,"id":58982,"mutability":"mutable","name":"randSeed2","nameLocation":"10457:9:110","nodeType":"VariableDeclaration","scope":59030,"src":"10449:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":58981,"name":"uint256","nodeType":"ElementaryTypeName","src":"10449:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":58985,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":58983,"name":"getEpochStartTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58897,"src":"10469:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":58984,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10469:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10449:39:110"},{"assignments":[58990],"declarations":[{"constant":false,"id":58990,"mutability":"mutable","name":"attesters","nameLocation":"10515:9:110","nodeType":"VariableDeclaration","scope":59030,"src":"10498:26:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":58988,"name":"address","nodeType":"ElementaryTypeName","src":"10498:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":58989,"nodeType":"ArrayTypeName","src":"10498:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":58998,"initialValue":{"arguments":[{"arguments":[{"id":58995,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"10587:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":58994,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10579:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":58993,"name":"address","nodeType":"ElementaryTypeName","src":"10579:7:110","typeDescriptions":{}}},"id":58996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10579:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":58991,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"10527:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":58992,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10543:35:110","memberName":"getStakedAttestersForAcceptingEpoch","nodeType":"MemberAccess","referencedDeclaration":62744,"src":"10527:51:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":58997,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10527:66:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"10498:95:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59002,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":58999,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58990,"src":"10607:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59000,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10617:6:110","memberName":"length","nodeType":"MemberAccess","src":"10607:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":59001,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10627:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10607:21:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59009,"nodeType":"IfStatement","src":"10603:69:110","trueBody":{"id":59008,"nodeType":"Block","src":"10630:42:110","statements":[{"expression":{"arguments":[{"hexValue":"30","id":59005,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10659:1:110","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":59004,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10651:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":59003,"name":"address","nodeType":"ElementaryTypeName","src":"10651:7:110","typeDescriptions":{}}},"id":59006,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10651:10:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":58975,"id":59007,"nodeType":"Return","src":"10644:17:110"}]}},{"assignments":[59011],"declarations":[{"constant":false,"id":59011,"mutability":"mutable","name":"postconfirmerIndex","nameLocation":"10689:18:110","nodeType":"VariableDeclaration","scope":59030,"src":"10681:26:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59010,"name":"uint256","nodeType":"ElementaryTypeName","src":"10681:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59025,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59024,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"arguments":[{"id":59017,"name":"randSeed1","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58977,"src":"10745:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":59018,"name":"randSeed2","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58982,"src":"10756:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":59015,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"10728:3:110","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":59016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"10732:12:110","memberName":"encodePacked","nodeType":"MemberAccess","src":"10728:16:110","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":59019,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10728:38:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":59014,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"10718:9:110","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":59020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10718:49:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":59013,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10710:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":59012,"name":"uint256","nodeType":"ElementaryTypeName","src":"10710:7:110","typeDescriptions":{}}},"id":59021,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10710:58:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"%","rightExpression":{"expression":{"id":59022,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58990,"src":"10771:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59023,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10781:6:110","memberName":"length","nodeType":"MemberAccess","src":"10771:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10710:77:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"10681:106:110"},{"expression":{"baseExpression":{"id":59026,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58990,"src":"10844:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59028,"indexExpression":{"id":59027,"name":"postconfirmerIndex","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59011,"src":"10854:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10844:29:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"functionReturnParameters":58975,"id":59029,"nodeType":"Return","src":"10837:36:110"}]},"baseFunctions":[60413],"documentation":{"id":58971,"nodeType":"StructuredDocumentation","src":"9617:109:110","text":"@notice Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness"},"functionSelector":"35ea1c63","implemented":true,"kind":"function","modifiers":[],"name":"getPostconfirmer","nameLocation":"9960:16:110","parameters":{"id":58972,"nodeType":"ParameterList","parameters":[],"src":"9976:2:110"},"returnParameters":{"id":58975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":58974,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59031,"src":"10000:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":58973,"name":"address","nodeType":"ElementaryTypeName","src":"10000:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"9999:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59051,"nodeType":"FunctionDefinition","src":"11026:250:110","nodes":[],"body":{"id":59050,"nodeType":"Block","src":"11107:169:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":59045,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"11253:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":59044,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11245:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":59043,"name":"address","nodeType":"ElementaryTypeName","src":"11245:7:110","typeDescriptions":{}}},"id":59046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11245:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59047,"name":"newEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59034,"src":"11260:8:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":59040,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"11211:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":59042,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"11227:17:110","memberName":"setAcceptingEpoch","nodeType":"MemberAccess","referencedDeclaration":62795,"src":"11211:33:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":59048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11211:58:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59049,"nodeType":"ExpressionStatement","src":"11211:58:110"}]},"baseFunctions":[60457],"documentation":{"id":59032,"nodeType":"StructuredDocumentation","src":"10886:135:110","text":"@notice Sets the accepting epoch to a new value (must be higher than current)\n @param newEpoch The new accepting epoch value"},"functionSelector":"d03509ec","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":59037,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"11089:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":59038,"kind":"modifierInvocation","modifierName":{"id":59036,"name":"onlyRole","nameLocations":["11080:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"11080:8:110"},"nodeType":"ModifierInvocation","src":"11080:26:110"}],"name":"setAcceptingEpoch","nameLocation":"11035:17:110","parameters":{"id":59035,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59034,"mutability":"mutable","name":"newEpoch","nameLocation":"11061:8:110","nodeType":"VariableDeclaration","scope":59051,"src":"11053:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59033,"name":"uint256","nodeType":"ElementaryTypeName","src":"11053:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"11052:18:110"},"returnParameters":{"id":59039,"nodeType":"ParameterList","parameters":[],"src":"11107:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":59070,"nodeType":"FunctionDefinition","src":"11507:242:110","nodes":[],"body":{"id":59069,"nodeType":"Block","src":"11676:73:110","nodes":[],"statements":[{"expression":{"arguments":[{"id":59064,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59053,"src":"11714:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":59065,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59055,"src":"11722:10:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":59066,"name":"blockId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59057,"src":"11734:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":59063,"name":"SuperBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60291,"src":"11693:20:110","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_SuperBlockCommitment_$60291_storage_ptr_$","typeString":"type(struct PCPStorage.SuperBlockCommitment storage pointer)"}},"id":59067,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11693:49:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"functionReturnParameters":59062,"id":59068,"nodeType":"Return","src":"11686:56:110"}]},"functionSelector":"026583d7","implemented":true,"kind":"function","modifiers":[],"name":"createSuperBlockCommitment","nameLocation":"11516:26:110","parameters":{"id":59058,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59053,"mutability":"mutable","name":"height","nameLocation":"11560:6:110","nodeType":"VariableDeclaration","scope":59070,"src":"11552:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59052,"name":"uint256","nodeType":"ElementaryTypeName","src":"11552:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59055,"mutability":"mutable","name":"commitment","nameLocation":"11584:10:110","nodeType":"VariableDeclaration","scope":59070,"src":"11576:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":59054,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11576:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":59057,"mutability":"mutable","name":"blockId","nameLocation":"11612:7:110","nodeType":"VariableDeclaration","scope":59070,"src":"11604:15:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":59056,"name":"bytes32","nodeType":"ElementaryTypeName","src":"11604:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"11542:83:110"},"returnParameters":{"id":59062,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59061,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59070,"src":"11647:27:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59060,"nodeType":"UserDefinedTypeName","pathNode":{"id":59059,"name":"SuperBlockCommitment","nameLocations":["11647:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"11647:20:110"},"referencedDeclaration":60291,"src":"11647:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"11646:29:110"},"scope":60258,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":59162,"nodeType":"FunctionDefinition","src":"11817:2174:110","nodes":[],"body":{"id":59161,"nodeType":"Block","src":"11963:2028:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59087,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":59079,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"12050:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59082,"indexExpression":{"expression":{"id":59080,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"12062:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59081,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12083:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"12062:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12050:40:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59084,"indexExpression":{"id":59083,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59073,"src":"12091:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12050:50:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":59085,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12101:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"12050:57:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":59086,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12111:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"12050:62:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59091,"nodeType":"IfStatement","src":"12046:113:110","trueBody":{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59088,"name":"AttesterAlreadyCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60395,"src":"12133:24:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12133:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59090,"nodeType":"RevertStatement","src":"12126:33:110"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59097,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59094,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59092,"name":"lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60274,"src":"12565:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":59093,"name":"leadingSuperBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60272,"src":"12601:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12565:62:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":59095,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"12630:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59096,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12651:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"12630:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12565:92:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59102,"nodeType":"IfStatement","src":"12561:156:110","trueBody":{"id":59101,"nodeType":"Block","src":"12659:58:110","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59098,"name":"AttesterAlreadyCommitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60395,"src":"12680:24:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59099,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12680:26:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59100,"nodeType":"RevertStatement","src":"12673:33:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":59103,"name":"superBlockHeightAssignedEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60295,"src":"13051:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59106,"indexExpression":{"expression":{"id":59104,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13081:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59105,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13102:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"13081:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13051:58:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":59107,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13113:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"13051:63:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59118,"nodeType":"IfStatement","src":"13047:172:110","trueBody":{"id":59117,"nodeType":"Block","src":"13116:103:110","statements":[{"expression":{"id":59115,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":59109,"name":"superBlockHeightAssignedEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60295,"src":"13130:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59112,"indexExpression":{"expression":{"id":59110,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13160:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59111,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13181:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"13160:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13130:58:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[],"expression":{"argumentTypes":[],"id":59113,"name":"getPresentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58911,"src":"13191:15:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59114,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13191:17:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13130:78:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59116,"nodeType":"ExpressionStatement","src":"13130:78:110"}]}},{"expression":{"id":59126,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":59119,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"13275:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59123,"indexExpression":{"expression":{"id":59120,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13287:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59121,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13308:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"13287:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13275:40:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59124,"indexExpression":{"id":59122,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59073,"src":"13316:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13275:50:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59125,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13328:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"src":"13275:73:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":59127,"nodeType":"ExpressionStatement","src":"13275:73:110"},{"expression":{"arguments":[{"expression":{"id":59129,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13453:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59130,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13474:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"13453:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":59131,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13482:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59132,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13503:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"13482:31:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59133,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"13515:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":59134,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13521:9:110","memberName":"timestamp","nodeType":"MemberAccess","src":"13515:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":59128,"name":"TrySetCommitmentFirstSeenAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59337,"src":"13425:27:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (uint256,bytes32,uint256)"}},"id":59135,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13425:106:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59136,"nodeType":"ExpressionStatement","src":"13425:106:110"},{"assignments":[59138],"declarations":[{"constant":false,"id":59138,"mutability":"mutable","name":"attesterStakeForAcceptingEpoch","nameLocation":"13601:30:110","nodeType":"VariableDeclaration","scope":59161,"src":"13593:38:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59137,"name":"uint256","nodeType":"ElementaryTypeName","src":"13593:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59142,"initialValue":{"arguments":[{"id":59140,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59073,"src":"13668:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":59139,"name":"getAttesterStakeForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60051,"src":"13634:33:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":59141,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13634:43:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"13593:84:110"},{"expression":{"id":59151,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":59143,"name":"commitmentStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60308,"src":"13687:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":59148,"indexExpression":{"expression":{"id":59144,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13703:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59145,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13724:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"13703:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13687:44:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":59149,"indexExpression":{"expression":{"id":59146,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13732:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59147,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13753:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"13732:31:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"13687:77:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":59150,"name":"attesterStakeForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59138,"src":"13768:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13687:111:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59152,"nodeType":"ExpressionStatement","src":"13687:111:110"},{"eventCall":{"arguments":[{"expression":{"id":59154,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13857:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59155,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13878:7:110","memberName":"blockId","nodeType":"MemberAccess","referencedDeclaration":60290,"src":"13857:28:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59156,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59076,"src":"13899:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59157,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13920:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"13899:31:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":59158,"name":"attesterStakeForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59138,"src":"13944:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":59153,"name":"SuperBlockCommitmentSubmitted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60391,"src":"13814:29:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes32,uint256)"}},"id":59159,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13814:170:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59160,"nodeType":"EmitStatement","src":"13809:175:110"}]},"documentation":{"id":59071,"nodeType":"StructuredDocumentation","src":"11755:57:110","text":"@dev submits a superBlock commitment for an attester."},"implemented":true,"kind":"function","modifiers":[],"name":"submitSuperBlockCommitmentForAttester","nameLocation":"11826:37:110","parameters":{"id":59077,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59073,"mutability":"mutable","name":"attester","nameLocation":"11881:8:110","nodeType":"VariableDeclaration","scope":59162,"src":"11873:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59072,"name":"address","nodeType":"ElementaryTypeName","src":"11873:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":59076,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"11927:20:110","nodeType":"VariableDeclaration","scope":59162,"src":"11899:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59075,"nodeType":"UserDefinedTypeName","pathNode":{"id":59074,"name":"SuperBlockCommitment","nameLocations":["11899:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"11899:20:110"},"referencedDeclaration":60291,"src":"11899:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"11863:90:110"},"returnParameters":{"id":59078,"nodeType":"ParameterList","parameters":[],"src":"11963:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":59186,"nodeType":"FunctionDefinition","src":"13996:337:110","nodes":[],"body":{"id":59185,"nodeType":"Block","src":"14091:242:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":59175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59169,"name":"openAttestationEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60341,"src":"14122:22:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":59171,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58510,"src":"14156:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59172,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14174:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59173,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14178:6:110","memberName":"sender","nodeType":"MemberAccess","src":"14174:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":59170,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39202,"src":"14148:7:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":59174,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14148:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14122:63:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d454e54","id":59176,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14199:36:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_42d34b2cfd79805238f0887e48c2989007b7b6d661caea2465d06a0303a66126","typeString":"literal_string \"UNAUTHORIZED_SUPERBLOCK_COMMITMENT\""},"value":"UNAUTHORIZED_SUPERBLOCK_COMMITMENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42d34b2cfd79805238f0887e48c2989007b7b6d661caea2465d06a0303a66126","typeString":"literal_string \"UNAUTHORIZED_SUPERBLOCK_COMMITMENT\""}],"id":59168,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14101:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":59177,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14101:144:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59178,"nodeType":"ExpressionStatement","src":"14101:144:110"},{"expression":{"arguments":[{"expression":{"id":59180,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14293:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59181,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14297:6:110","memberName":"sender","nodeType":"MemberAccess","src":"14293:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59182,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59165,"src":"14305:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}],"id":59179,"name":"submitSuperBlockCommitmentForAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59162,"src":"14255:37:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$returns$__$","typeString":"function (address,struct PCPStorage.SuperBlockCommitment memory)"}},"id":59183,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14255:71:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59184,"nodeType":"ExpressionStatement","src":"14255:71:110"}]},"baseFunctions":[60420],"functionSelector":"0e74b609","implemented":true,"kind":"function","modifiers":[],"name":"submitSuperBlockCommitment","nameLocation":"14005:26:110","parameters":{"id":59166,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59165,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"14060:20:110","nodeType":"VariableDeclaration","scope":59186,"src":"14032:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59164,"nodeType":"UserDefinedTypeName","pathNode":{"id":59163,"name":"SuperBlockCommitment","nameLocations":["14032:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"14032:20:110"},"referencedDeclaration":60291,"src":"14032:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"14031:50:110"},"returnParameters":{"id":59167,"nodeType":"ParameterList","parameters":[],"src":"14091:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":59226,"nodeType":"FunctionDefinition","src":"14339:430:110","nodes":[],"body":{"id":59225,"nodeType":"Block","src":"14440:329:110","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":59200,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59194,"name":"openAttestationEnabled","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60341,"src":"14471:22:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":59196,"name":"TRUSTED_ATTESTER","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58510,"src":"14505:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59197,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14523:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14527:6:110","memberName":"sender","nodeType":"MemberAccess","src":"14523:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":59195,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39202,"src":"14497:7:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":59199,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14497:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"14471:63:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d454e54","id":59201,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"14548:36:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_42d34b2cfd79805238f0887e48c2989007b7b6d661caea2465d06a0303a66126","typeString":"literal_string \"UNAUTHORIZED_SUPERBLOCK_COMMITMENT\""},"value":"UNAUTHORIZED_SUPERBLOCK_COMMITMENT"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_42d34b2cfd79805238f0887e48c2989007b7b6d661caea2465d06a0303a66126","typeString":"literal_string \"UNAUTHORIZED_SUPERBLOCK_COMMITMENT\""}],"id":59193,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"14450:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":59202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14450:144:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59203,"nodeType":"ExpressionStatement","src":"14450:144:110"},{"body":{"id":59223,"nodeType":"Block","src":"14663:100:110","statements":[{"expression":{"arguments":[{"expression":{"id":59216,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14715:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59217,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14719:6:110","memberName":"sender","nodeType":"MemberAccess","src":"14715:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":59218,"name":"superBlockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59190,"src":"14727:21:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$dyn_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory[] memory"}},"id":59220,"indexExpression":{"id":59219,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59205,"src":"14749:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14727:24:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}],"id":59215,"name":"submitSuperBlockCommitmentForAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59162,"src":"14677:37:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$returns$__$","typeString":"function (address,struct PCPStorage.SuperBlockCommitment memory)"}},"id":59221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14677:75:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59222,"nodeType":"ExpressionStatement","src":"14677:75:110"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59211,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59208,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59205,"src":"14624:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":59209,"name":"superBlockCommitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59190,"src":"14628:21:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$dyn_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory[] memory"}},"id":59210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14650:6:110","memberName":"length","nodeType":"MemberAccess","src":"14628:28:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14624:32:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59224,"initializationExpression":{"assignments":[59205],"declarations":[{"constant":false,"id":59205,"mutability":"mutable","name":"i","nameLocation":"14617:1:110","nodeType":"VariableDeclaration","scope":59224,"src":"14609:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59204,"name":"uint256","nodeType":"ElementaryTypeName","src":"14609:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59207,"initialValue":{"hexValue":"30","id":59206,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14621:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"14609:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":59213,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"14658:3:110","subExpression":{"id":59212,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59205,"src":"14658:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59214,"nodeType":"ExpressionStatement","src":"14658:3:110"},"nodeType":"ForStatement","src":"14604:159:110"}]},"functionSelector":"622e3616","implemented":true,"kind":"function","modifiers":[],"name":"submitBatchSuperBlockCommitment","nameLocation":"14348:31:110","parameters":{"id":59191,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59190,"mutability":"mutable","name":"superBlockCommitments","nameLocation":"14410:21:110","nodeType":"VariableDeclaration","scope":59226,"src":"14380:51:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$dyn_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment[]"},"typeName":{"baseType":{"id":59188,"nodeType":"UserDefinedTypeName","pathNode":{"id":59187,"name":"SuperBlockCommitment","nameLocations":["14380:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"14380:20:110"},"referencedDeclaration":60291,"src":"14380:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"id":59189,"nodeType":"ArrayTypeName","src":"14380:22:110","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_SuperBlockCommitment_$60291_storage_$dyn_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment[]"}},"visibility":"internal"}],"src":"14379:53:110"},"returnParameters":{"id":59192,"nodeType":"ParameterList","parameters":[],"src":"14440:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":59243,"nodeType":"FunctionDefinition","src":"14774:209:110","nodes":[],"body":{"id":59242,"nodeType":"Block","src":"14930:53:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":59236,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"14947:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59238,"indexExpression":{"id":59237,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59228,"src":"14959:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14947:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59240,"indexExpression":{"id":59239,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59230,"src":"14967:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14947:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"functionReturnParameters":59235,"id":59241,"nodeType":"Return","src":"14940:36:110"}]},"functionSelector":"556d97c8","implemented":true,"kind":"function","modifiers":[],"name":"getValidatorCommitmentAtSuperBlockHeight","nameLocation":"14783:40:110","parameters":{"id":59231,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59228,"mutability":"mutable","name":"height","nameLocation":"14841:6:110","nodeType":"VariableDeclaration","scope":59243,"src":"14833:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59227,"name":"uint256","nodeType":"ElementaryTypeName","src":"14833:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59230,"mutability":"mutable","name":"attester","nameLocation":"14865:8:110","nodeType":"VariableDeclaration","scope":59243,"src":"14857:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59229,"name":"address","nodeType":"ElementaryTypeName","src":"14857:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"14823:56:110"},"returnParameters":{"id":59235,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59234,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59243,"src":"14901:27:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59233,"nodeType":"UserDefinedTypeName","pathNode":{"id":59232,"name":"SuperBlockCommitment","nameLocations":["14901:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"14901:20:110"},"referencedDeclaration":60291,"src":"14901:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"14900:29:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59253,"nodeType":"FunctionDefinition","src":"15037:159:110","nodes":[],"body":{"id":59252,"nodeType":"Block","src":"15110:86:110","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59250,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59248,"name":"lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60274,"src":"15127:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":59249,"name":"leadingSuperBlockTolerance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60272,"src":"15163:26:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15127:62:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59247,"id":59251,"nodeType":"Return","src":"15120:69:110"}]},"functionSelector":"943b79e2","implemented":true,"kind":"function","modifiers":[],"name":"getMaxTolerableSuperBlockHeight","nameLocation":"15046:31:110","parameters":{"id":59244,"nodeType":"ParameterList","parameters":[],"src":"15077:2:110"},"returnParameters":{"id":59247,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59246,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59253,"src":"15101:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59245,"name":"uint256","nodeType":"ElementaryTypeName","src":"15101:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15100:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59271,"nodeType":"FunctionDefinition","src":"15281:170:110","nodes":[],"body":{"id":59270,"nodeType":"Block","src":"15398:53:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":59264,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"15415:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59266,"indexExpression":{"id":59265,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59256,"src":"15427:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15415:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59268,"indexExpression":{"id":59267,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59258,"src":"15435:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15415:29:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"functionReturnParameters":59263,"id":59269,"nodeType":"Return","src":"15408:36:110"}]},"documentation":{"id":59254,"nodeType":"StructuredDocumentation","src":"15201:75:110","text":"@notice Gets the commitment submitted by an attester for a given height"},"functionSelector":"f1949add","implemented":true,"kind":"function","modifiers":[],"name":"getCommitmentByAttester","nameLocation":"15290:23:110","parameters":{"id":59259,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59256,"mutability":"mutable","name":"height","nameLocation":"15322:6:110","nodeType":"VariableDeclaration","scope":59271,"src":"15314:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59255,"name":"uint256","nodeType":"ElementaryTypeName","src":"15314:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59258,"mutability":"mutable","name":"attester","nameLocation":"15338:8:110","nodeType":"VariableDeclaration","scope":59271,"src":"15330:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59257,"name":"address","nodeType":"ElementaryTypeName","src":"15330:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"15313:34:110"},"returnParameters":{"id":59263,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59262,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59271,"src":"15369:27:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59261,"nodeType":"UserDefinedTypeName","pathNode":{"id":59260,"name":"SuperBlockCommitment","nameLocations":["15369:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"15369:20:110"},"referencedDeclaration":60291,"src":"15369:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"15368:29:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59284,"nodeType":"FunctionDefinition","src":"15520:149:110","nodes":[],"body":{"id":59283,"nodeType":"Block","src":"15608:61:110","nodes":[],"statements":[{"expression":{"baseExpression":{"id":59279,"name":"superBlockHeightAssignedEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60295,"src":"15625:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59281,"indexExpression":{"id":59280,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59274,"src":"15655:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15625:37:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59278,"id":59282,"nodeType":"Return","src":"15618:44:110"}]},"documentation":{"id":59272,"nodeType":"StructuredDocumentation","src":"15457:58:110","text":"@notice Gets the epoch assigned to a superblock height"},"functionSelector":"d283392e","implemented":true,"kind":"function","modifiers":[],"name":"getSuperBlockHeightAssignedEpoch","nameLocation":"15529:32:110","parameters":{"id":59275,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59274,"mutability":"mutable","name":"height","nameLocation":"15570:6:110","nodeType":"VariableDeclaration","scope":59284,"src":"15562:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59273,"name":"uint256","nodeType":"ElementaryTypeName","src":"15562:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15561:16:110"},"returnParameters":{"id":59278,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59277,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59284,"src":"15599:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59276,"name":"uint256","nodeType":"ElementaryTypeName","src":"15599:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15598:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59302,"nodeType":"FunctionDefinition","src":"15875:221:110","nodes":[],"body":{"id":59301,"nodeType":"Block","src":"15989:107:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":59293,"name":"commitmentFirstSeenAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60314,"src":"16006:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":59296,"indexExpression":{"expression":{"id":59294,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59288,"src":"16028:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59295,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16049:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"16028:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:50:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":59299,"indexExpression":{"expression":{"id":59297,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59288,"src":"16057:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59298,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16078:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"16057:31:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16006:83:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59292,"id":59300,"nodeType":"Return","src":"15999:90:110"}]},"documentation":{"id":59285,"nodeType":"StructuredDocumentation","src":"15808:62:110","text":"@notice get the timestamp when a commitment was first seen"},"functionSelector":"e07472ef","implemented":true,"kind":"function","modifiers":[],"name":"getCommitmentFirstSeenAt","nameLocation":"15884:24:110","parameters":{"id":59289,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59288,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"15937:20:110","nodeType":"VariableDeclaration","scope":59302,"src":"15909:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59287,"nodeType":"UserDefinedTypeName","pathNode":{"id":59286,"name":"SuperBlockCommitment","nameLocations":["15909:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"15909:20:110"},"referencedDeclaration":60291,"src":"15909:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"15908:50:110"},"returnParameters":{"id":59292,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59291,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59302,"src":"15980:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59290,"name":"uint256","nodeType":"ElementaryTypeName","src":"15980:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"15979:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59337,"nodeType":"FunctionDefinition","src":"16170:443:110","nodes":[],"body":{"id":59336,"nodeType":"Block","src":"16271:342:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59318,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":59312,"name":"commitmentFirstSeenAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60314,"src":"16285:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":59314,"indexExpression":{"id":59313,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59305,"src":"16307:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16285:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":59316,"indexExpression":{"id":59315,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59307,"src":"16315:10:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16285:41:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":59317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16330:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16285:46:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59323,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59321,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59309,"src":"16415:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":59322,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16428:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16415:14:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59326,"nodeType":"IfStatement","src":"16411:133:110","trueBody":{"id":59325,"nodeType":"Block","src":"16431:113:110","statements":[{"functionReturnParameters":59311,"id":59324,"nodeType":"Return","src":"16527:7:110"}]}},"id":59327,"nodeType":"IfStatement","src":"16281:263:110","trueBody":{"id":59320,"nodeType":"Block","src":"16333:72:110","statements":[{"functionReturnParameters":59311,"id":59319,"nodeType":"Return","src":"16388:7:110"}]}},{"expression":{"id":59334,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":59328,"name":"commitmentFirstSeenAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60314,"src":"16553:21:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":59331,"indexExpression":{"id":59329,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59305,"src":"16575:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16553:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":59332,"indexExpression":{"id":59330,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59307,"src":"16583:10:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16553:41:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59333,"name":"timestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59309,"src":"16597:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16553:53:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59335,"nodeType":"ExpressionStatement","src":"16553:53:110"}]},"documentation":{"id":59303,"nodeType":"StructuredDocumentation","src":"16102:63:110","text":"@notice Sets the timestamp when a commitment was first seen"},"implemented":true,"kind":"function","modifiers":[],"name":"TrySetCommitmentFirstSeenAt","nameLocation":"16179:27:110","parameters":{"id":59310,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59305,"mutability":"mutable","name":"height","nameLocation":"16215:6:110","nodeType":"VariableDeclaration","scope":59337,"src":"16207:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59304,"name":"uint256","nodeType":"ElementaryTypeName","src":"16207:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59307,"mutability":"mutable","name":"commitment","nameLocation":"16231:10:110","nodeType":"VariableDeclaration","scope":59337,"src":"16223:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":59306,"name":"bytes32","nodeType":"ElementaryTypeName","src":"16223:7:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":59309,"mutability":"mutable","name":"timestamp","nameLocation":"16251:9:110","nodeType":"VariableDeclaration","scope":59337,"src":"16243:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59308,"name":"uint256","nodeType":"ElementaryTypeName","src":"16243:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16206:55:110"},"returnParameters":{"id":59311,"nodeType":"ParameterList","parameters":[],"src":"16271:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":59346,"nodeType":"FunctionDefinition","src":"16904:135:110","nodes":[],"body":{"id":59345,"nodeType":"Block","src":"16982:57:110","nodes":[],"statements":[{"expression":{"id":59343,"name":"lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60274,"src":"16999:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59342,"id":59344,"nodeType":"Return","src":"16992:40:110"}]},"baseFunctions":[60426],"documentation":{"id":59338,"nodeType":"StructuredDocumentation","src":"16835:64:110","text":"@notice Gets the height of the last postconfirmed superblock"},"functionSelector":"59b99597","implemented":true,"kind":"function","modifiers":[],"name":"getLastPostconfirmedSuperBlockHeight","nameLocation":"16913:36:110","parameters":{"id":59339,"nodeType":"ParameterList","parameters":[],"src":"16949:2:110"},"returnParameters":{"id":59342,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59341,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59346,"src":"16973:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59340,"name":"uint256","nodeType":"ElementaryTypeName","src":"16973:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"16972:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59355,"nodeType":"FunctionDefinition","src":"17045:115:110","nodes":[],"body":{"id":59354,"nodeType":"Block","src":"17097:63:110","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":59350,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17142:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59351,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17146:6:110","memberName":"sender","nodeType":"MemberAccess","src":"17142:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":59349,"name":"postconfirmAndRolloverWithAttester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59369,"src":"17107:34:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":59352,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17107:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59353,"nodeType":"ExpressionStatement","src":"17107:46:110"}]},"baseFunctions":[60451],"functionSelector":"26624e37","implemented":true,"kind":"function","modifiers":[],"name":"postconfirmSuperBlocksAndRollover","nameLocation":"17054:33:110","parameters":{"id":59347,"nodeType":"ParameterList","parameters":[],"src":"17087:2:110"},"returnParameters":{"id":59348,"nodeType":"ParameterList","parameters":[],"src":"17097:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":59369,"nodeType":"FunctionDefinition","src":"17774:485:110","nodes":[],"body":{"id":59368,"nodeType":"Block","src":"17851:408:110","nodes":[],"statements":[{"body":{"id":59366,"nodeType":"Block","src":"18242:11:110","statements":[]},"condition":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59364,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59362,"name":"lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60274,"src":"18202:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":59363,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"18238:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"18202:37:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":59361,"name":"attemptPostconfirmOrRollover","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59941,"src":"18173:28:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) returns (bool)"}},"id":59365,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18173:67:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59367,"nodeType":"WhileStatement","src":"18166:87:110"}]},"documentation":{"id":59356,"nodeType":"StructuredDocumentation","src":"17563:106:110","text":"@notice If the current postconfirmer is not live, we should accept postconfirmations from any attester"},"implemented":true,"kind":"function","modifiers":[],"name":"postconfirmAndRolloverWithAttester","nameLocation":"17783:34:110","parameters":{"id":59359,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59358,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59369,"src":"17818:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59357,"name":"address","nodeType":"ElementaryTypeName","src":"17818:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"17817:24:110"},"returnParameters":{"id":59360,"nodeType":"ParameterList","parameters":[],"src":"17851:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":59394,"nodeType":"FunctionDefinition","src":"18335:405:110","nodes":[],"body":{"id":59393,"nodeType":"Block","src":"18441:299:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":59377,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"18480:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59378,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"18498:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59379,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18502:6:110","memberName":"sender","nodeType":"MemberAccess","src":"18498:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":59376,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39202,"src":"18472:7:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":59380,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18472:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f4f4e4c59","id":59381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"18523:70:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_0977ec2248431def5ae1a15f4d76a33486566739fca9c42d9176f889e347a11f","typeString":"literal_string \"SET_LAST_POSTCONFIRMED_COMMITMENT_AT_HEIGHT_IS_COMMITMENT_ADMIN_ONLY\""},"value":"SET_LAST_POSTCONFIRMED_COMMITMENT_AT_HEIGHT_IS_COMMITMENT_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0977ec2248431def5ae1a15f4d76a33486566739fca9c42d9176f889e347a11f","typeString":"literal_string \"SET_LAST_POSTCONFIRMED_COMMITMENT_AT_HEIGHT_IS_COMMITMENT_ADMIN_ONLY\""}],"id":59375,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"18451:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":59382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18451:152:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59383,"nodeType":"ExpressionStatement","src":"18451:152:110"},{"expression":{"id":59391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":59384,"name":"versionedPostconfirmedSuperBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60348,"src":"18613:33:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59388,"indexExpression":{"id":59385,"name":"postconfirmedSuperBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60350,"src":"18647:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18613:66:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59389,"indexExpression":{"expression":{"id":59386,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59372,"src":"18680:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59387,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"18701:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"18680:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18613:95:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59390,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59372,"src":"18711:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"src":"18613:118:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":59392,"nodeType":"ExpressionStatement","src":"18613:118:110"}]},"functionSelector":"3119edd4","implemented":true,"kind":"function","modifiers":[],"name":"setPostconfirmedCommitmentAtBlockHeight","nameLocation":"18344:39:110","parameters":{"id":59373,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59372,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"18412:20:110","nodeType":"VariableDeclaration","scope":59394,"src":"18384:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59371,"nodeType":"UserDefinedTypeName","pathNode":{"id":59370,"name":"SuperBlockCommitment","nameLocations":["18384:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"18384:20:110"},"referencedDeclaration":60291,"src":"18384:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"18383:50:110"},"returnParameters":{"id":59374,"nodeType":"ParameterList","parameters":[],"src":"18441:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":59414,"nodeType":"FunctionDefinition","src":"18935:308:110","nodes":[],"body":{"id":59413,"nodeType":"Block","src":"19023:220:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":59402,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"19062:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59403,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"19080:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19084:6:110","memberName":"sender","nodeType":"MemberAccess","src":"19080:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address","typeString":"address"}],"id":59401,"name":"hasRole","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":39202,"src":"19054:7:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$","typeString":"function (bytes32,address) view returns (bool)"}},"id":59405,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19054:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d49544d454e545f41444d494e5f4f4e4c59","id":59406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"19105:50:110","typeDescriptions":{"typeIdentifier":"t_stringliteral_769db6d293c786b13b107ddcfdc491f9fdfa9dc0a09944362f64328186fea1df","typeString":"literal_string \"FORCE_LATEST_COMMITMENT_IS_COMMITMENT_ADMIN_ONLY\""},"value":"FORCE_LATEST_COMMITMENT_IS_COMMITMENT_ADMIN_ONLY"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_769db6d293c786b13b107ddcfdc491f9fdfa9dc0a09944362f64328186fea1df","typeString":"literal_string \"FORCE_LATEST_COMMITMENT_IS_COMMITMENT_ADMIN_ONLY\""}],"id":59400,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18,-18],"referencedDeclaration":-18,"src":"19033:7:110","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":59407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19033:132:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59408,"nodeType":"ExpressionStatement","src":"19033:132:110"},{"expression":{"arguments":[{"id":59410,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59397,"src":"19215:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}],"id":59409,"name":"setPostconfirmedCommitmentAtBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59394,"src":"19175:39:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$returns$__$","typeString":"function (struct PCPStorage.SuperBlockCommitment memory)"}},"id":59411,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19175:61:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59412,"nodeType":"ExpressionStatement","src":"19175:61:110"}]},"functionSelector":"08c7050f","implemented":true,"kind":"function","modifiers":[],"name":"forceLatestCommitment","nameLocation":"18944:21:110","parameters":{"id":59398,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59397,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"18994:20:110","nodeType":"VariableDeclaration","scope":59414,"src":"18966:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59396,"nodeType":"UserDefinedTypeName","pathNode":{"id":59395,"name":"SuperBlockCommitment","nameLocations":["18966:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"18966:20:110"},"referencedDeclaration":60291,"src":"18966:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"18965:50:110"},"returnParameters":{"id":59399,"nodeType":"ParameterList","parameters":[],"src":"19023:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":59429,"nodeType":"FunctionDefinition","src":"19249:200:110","nodes":[],"body":{"id":59428,"nodeType":"Block","src":"19351:98:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":59422,"name":"versionedPostconfirmedSuperBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60348,"src":"19368:33:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59424,"indexExpression":{"id":59423,"name":"postconfirmedSuperBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60350,"src":"19402:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19368:66:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59426,"indexExpression":{"id":59425,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59416,"src":"19435:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19368:74:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"functionReturnParameters":59421,"id":59427,"nodeType":"Return","src":"19361:81:110"}]},"baseFunctions":[60447],"functionSelector":"2bfd11d6","implemented":true,"kind":"function","modifiers":[],"name":"getPostconfirmedCommitment","nameLocation":"19258:26:110","parameters":{"id":59417,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59416,"mutability":"mutable","name":"height","nameLocation":"19293:6:110","nodeType":"VariableDeclaration","scope":59429,"src":"19285:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59415,"name":"uint256","nodeType":"ElementaryTypeName","src":"19285:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19284:16:110"},"returnParameters":{"id":59421,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59420,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59429,"src":"19322:27:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59419,"nodeType":"UserDefinedTypeName","pathNode":{"id":59418,"name":"SuperBlockCommitment","nameLocations":["19322:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"19322:20:110"},"referencedDeclaration":60291,"src":"19322:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"19321:29:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59585,"nodeType":"FunctionDefinition","src":"19647:2891:110","nodes":[],"body":{"id":59584,"nodeType":"Block","src":"19766:2772:110","nodes":[],"statements":[{"assignments":[59439],"declarations":[{"constant":false,"id":59439,"mutability":"mutable","name":"currentAcceptingEpoch","nameLocation":"19784:21:110","nodeType":"VariableDeclaration","scope":59584,"src":"19776:29:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59438,"name":"uint256","nodeType":"ElementaryTypeName","src":"19776:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59442,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":59440,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"19808:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59441,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19808:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19776:51:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59448,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":59443,"name":"superBlockHeightAssignedEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60295,"src":"20072:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59446,"indexExpression":{"expression":{"id":59444,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"20102:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59445,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20123:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"20102:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20072:58:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":59447,"name":"currentAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59439,"src":"20134:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20072:83:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59453,"nodeType":"IfStatement","src":"20068:155:110","trueBody":{"id":59452,"nodeType":"Block","src":"20157:66:110","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59449,"name":"UnacceptableSuperBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60393,"src":"20178:32:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59450,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20178:34:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59451,"nodeType":"RevertStatement","src":"20171:41:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59459,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59454,"name":"lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60274,"src":"20335:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":59455,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"20372:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59456,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20393:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"20372:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":59457,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20402:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"20372:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20335:68:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59464,"nodeType":"IfStatement","src":"20331:140:110","trueBody":{"id":59463,"nodeType":"Block","src":"20405:66:110","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":59460,"name":"UnacceptableSuperBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60393,"src":"20426:32:110","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":59461,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20426:34:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":59462,"nodeType":"RevertStatement","src":"20419:41:110"}]}},{"assignments":[59469],"declarations":[{"constant":false,"id":59469,"mutability":"mutable","name":"attesters","nameLocation":"20588:9:110","nodeType":"VariableDeclaration","scope":59584,"src":"20571:26:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":59467,"name":"address","nodeType":"ElementaryTypeName","src":"20571:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59468,"nodeType":"ArrayTypeName","src":"20571:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":59472,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":59470,"name":"getStakedAttestersForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60222,"src":"20600:35:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view returns (address[] memory)"}},"id":59471,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20600:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"20571:66:110"},{"body":{"id":59507,"nodeType":"Block","src":"20694:222:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":59495,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":59484,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"20712:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59487,"indexExpression":{"expression":{"id":59485,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"20724:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59486,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20745:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"20724:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20712:40:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59491,"indexExpression":{"baseExpression":{"id":59488,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59469,"src":"20753:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59490,"indexExpression":{"id":59489,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59474,"src":"20763:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20753:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20712:54:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":59492,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20767:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"20712:65:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":59493,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"20781:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59494,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"20802:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"20781:31:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"20712:100:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59506,"nodeType":"IfStatement","src":"20708:198:110","trueBody":{"id":59505,"nodeType":"Block","src":"20814:92:110","statements":[{"expression":{"id":59503,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"20832:59:110","subExpression":{"baseExpression":{"baseExpression":{"id":59496,"name":"attesterRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60356,"src":"20832:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":59501,"indexExpression":{"id":59497,"name":"currentAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59439,"src":"20853:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20832:43:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":59502,"indexExpression":{"baseExpression":{"id":59498,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59469,"src":"20876:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59500,"indexExpression":{"id":59499,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59474,"src":"20886:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20876:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20832:57:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59504,"nodeType":"ExpressionStatement","src":"20832:59:110"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59480,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59477,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59474,"src":"20667:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":59478,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59469,"src":"20671:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59479,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"20681:6:110","memberName":"length","nodeType":"MemberAccess","src":"20671:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20667:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59508,"initializationExpression":{"assignments":[59474],"declarations":[{"constant":false,"id":59474,"mutability":"mutable","name":"i","nameLocation":"20660:1:110","nodeType":"VariableDeclaration","scope":59508,"src":"20652:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59473,"name":"uint256","nodeType":"ElementaryTypeName","src":"20652:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59476,"initialValue":{"hexValue":"30","id":59475,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20664:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"20652:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":59482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"20689:3:110","subExpression":{"id":59481,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59474,"src":"20689:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59483,"nodeType":"ExpressionStatement","src":"20689:3:110"},"nodeType":"ForStatement","src":"20647:269:110"},{"condition":{"id":59512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"20971:61:110","subExpression":{"arguments":[{"id":59510,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"21011:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}],"id":59509,"name":"isWithinPostconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59736,"src":"20972:38:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$returns$_t_bool_$","typeString":"function (struct PCPStorage.SuperBlockCommitment memory) view returns (bool)"}},"id":59511,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"20972:60:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":59536,"nodeType":"Block","src":"21237:630:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":59525,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59522,"name":"getPostconfirmer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59031,"src":"21729:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":59523,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"21729:18:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":59524,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59435,"src":"21751:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"21729:30:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59535,"nodeType":"IfStatement","src":"21725:132:110","trueBody":{"id":59534,"nodeType":"Block","src":"21761:96:110","statements":[{"expression":{"id":59532,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":59526,"name":"postconfirmerRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60362,"src":"21779:25:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":59529,"indexExpression":{"id":59527,"name":"currentAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59439,"src":"21805:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21779:48:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":59530,"indexExpression":{"id":59528,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59435,"src":"21828:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21779:58:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":59531,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21841:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21779:63:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59533,"nodeType":"ExpressionStatement","src":"21779:63:110"}]}}]},"id":59537,"nodeType":"IfStatement","src":"20967:900:110","trueBody":{"id":59521,"nodeType":"Block","src":"21034:197:110","statements":[{"expression":{"id":59519,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":59513,"name":"postconfirmerRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60362,"src":"21157:25:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":59516,"indexExpression":{"id":59514,"name":"currentAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59439,"src":"21183:21:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21157:48:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":59517,"indexExpression":{"id":59515,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59435,"src":"21206:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21157:58:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"hexValue":"31","id":59518,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"21219:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"21157:63:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59520,"nodeType":"ExpressionStatement","src":"21157:63:110"}]}},{"expression":{"id":59545,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":59538,"name":"versionedPostconfirmedSuperBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60348,"src":"21877:33:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59542,"indexExpression":{"id":59539,"name":"postconfirmedSuperBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60350,"src":"21911:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"21877:66:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59543,"indexExpression":{"expression":{"id":59540,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"21944:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59541,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"21965:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"21944:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"21877:95:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59544,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"21975:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"src":"21877:118:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":59546,"nodeType":"ExpressionStatement","src":"21877:118:110"},{"expression":{"id":59550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":59547,"name":"lastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60274,"src":"22005:33:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":59548,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"22041:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59549,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22062:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"22041:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22005:63:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59551,"nodeType":"ExpressionStatement","src":"22005:63:110"},{"expression":{"id":59557,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":59552,"name":"postconfirmedBy","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60318,"src":"22078:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_address_$","typeString":"mapping(uint256 => address)"}},"id":59555,"indexExpression":{"expression":{"id":59553,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"22094:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59554,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22115:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"22094:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22078:44:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59556,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59435,"src":"22125:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"22078:55:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59558,"nodeType":"ExpressionStatement","src":"22078:55:110"},{"expression":{"id":59565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":59559,"name":"postconfirmedAtL1BlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60326,"src":"22143:28:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59562,"indexExpression":{"expression":{"id":59560,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"22172:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59561,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22193:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"22172:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22143:57:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":59563,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22203:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":59564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22209:6:110","memberName":"number","nodeType":"MemberAccess","src":"22203:12:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22143:72:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59566,"nodeType":"ExpressionStatement","src":"22143:72:110"},{"expression":{"id":59573,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":59567,"name":"postconfirmedAtL1BlockTimestamp","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60330,"src":"22225:31:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59570,"indexExpression":{"expression":{"id":59568,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"22257:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59569,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22278:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"22257:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"22225:60:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":59571,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"22288:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":59572,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"22294:9:110","memberName":"timestamp","nodeType":"MemberAccess","src":"22288:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"22225:78:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59574,"nodeType":"ExpressionStatement","src":"22225:78:110"},{"eventCall":{"arguments":[{"expression":{"id":59576,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"22407:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59577,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22428:7:110","memberName":"blockId","nodeType":"MemberAccess","referencedDeclaration":60290,"src":"22407:28:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59578,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"22449:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59579,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22470:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"22449:31:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":59580,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59433,"src":"22494:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59581,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"22515:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"22494:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":59575,"name":"SuperBlockPostconfirmed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60383,"src":"22370:23:110","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$","typeString":"function (bytes32,bytes32,uint256)"}},"id":59582,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22370:161:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59583,"nodeType":"EmitStatement","src":"22365:166:110"}]},"documentation":{"id":59430,"nodeType":"StructuredDocumentation","src":"19454:188:110","text":"@dev Postconfirms a superBlock commitment.\n @dev This function and attemptPostconfirmOrRollover() could call each other recursively, so we must ensure it's safe from re-entrancy"},"implemented":true,"kind":"function","modifiers":[],"name":"_postconfirmSuperBlockCommitment","nameLocation":"19656:32:110","parameters":{"id":59436,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59433,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"19717:20:110","nodeType":"VariableDeclaration","scope":59585,"src":"19689:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59432,"nodeType":"UserDefinedTypeName","pathNode":{"id":59431,"name":"SuperBlockCommitment","nameLocations":["19689:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"19689:20:110"},"referencedDeclaration":60291,"src":"19689:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"},{"constant":false,"id":59435,"mutability":"mutable","name":"attester","nameLocation":"19747:8:110","nodeType":"VariableDeclaration","scope":59585,"src":"19739:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59434,"name":"address","nodeType":"ElementaryTypeName","src":"19739:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19688:68:110"},"returnParameters":{"id":59437,"nodeType":"ParameterList","parameters":[],"src":"19766:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":59699,"nodeType":"FunctionDefinition","src":"22785:1897:110","nodes":[],"body":{"id":59698,"nodeType":"Block","src":"22819:1863:110","nodes":[],"statements":[{"assignments":[59590],"declarations":[{"constant":false,"id":59590,"mutability":"mutable","name":"acceptingEpoch","nameLocation":"22905:14:110","nodeType":"VariableDeclaration","scope":59698,"src":"22897:22:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59589,"name":"uint256","nodeType":"ElementaryTypeName","src":"22897:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59593,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":59591,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"22922:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59592,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22922:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"22897:44:110"},{"assignments":[59598],"declarations":[{"constant":false,"id":59598,"mutability":"mutable","name":"attesters","nameLocation":"22968:9:110","nodeType":"VariableDeclaration","scope":59698,"src":"22951:26:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":59596,"name":"address","nodeType":"ElementaryTypeName","src":"22951:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59597,"nodeType":"ArrayTypeName","src":"22951:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":59601,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":59599,"name":"getStakedAttestersForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60222,"src":"22980:35:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view returns (address[] memory)"}},"id":59600,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"22980:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"22951:66:110"},{"body":{"id":59691,"nodeType":"Block","src":"23101:1533:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59621,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":59613,"name":"attesterRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60356,"src":"23119:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":59615,"indexExpression":{"id":59614,"name":"acceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59590,"src":"23140:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23119:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":59619,"indexExpression":{"baseExpression":{"id":59616,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"23156:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59618,"indexExpression":{"id":59617,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"23166:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23156:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23119:50:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":59620,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23172:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23119:54:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59651,"nodeType":"IfStatement","src":"23115:697:110","trueBody":{"id":59650,"nodeType":"Block","src":"23175:637:110","statements":[{"assignments":[59623],"declarations":[{"constant":false,"id":59623,"mutability":"mutable","name":"reward","nameLocation":"23281:6:110","nodeType":"VariableDeclaration","scope":59650,"src":"23273:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59622,"name":"uint256","nodeType":"ElementaryTypeName","src":"23273:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59639,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59638,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59632,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":59624,"name":"attesterRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60356,"src":"23290:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":59626,"indexExpression":{"id":59625,"name":"acceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59590,"src":"23311:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23290:36:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":59630,"indexExpression":{"baseExpression":{"id":59627,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"23327:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59629,"indexExpression":{"id":59628,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"23337:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23327:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23290:50:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":59631,"name":"rewardPerAttestationPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60364,"src":"23343:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23290:78:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"baseExpression":{"id":59634,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"23405:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59636,"indexExpression":{"id":59635,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"23415:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23405:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":59633,"name":"getAttesterStakeForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60051,"src":"23371:33:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":59637,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23371:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23290:128:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23273:145:110"},{"expression":{"arguments":[{"baseExpression":{"id":59643,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"23596:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59645,"indexExpression":{"id":59644,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"23606:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23596:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59646,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59623,"src":"23610:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":59647,"name":"moveTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60270,"src":"23618:16:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":59640,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"23563:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":59642,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23579:16:110","memberName":"rewardFromDomain","nodeType":"MemberAccess","referencedDeclaration":62769,"src":"23563:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) external"}},"id":59648,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"23563:72:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59649,"nodeType":"ExpressionStatement","src":"23563:72:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59660,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":59652,"name":"postconfirmerRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60362,"src":"23874:25:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":59654,"indexExpression":{"id":59653,"name":"acceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59590,"src":"23900:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23874:41:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":59658,"indexExpression":{"baseExpression":{"id":59655,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"23916:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59657,"indexExpression":{"id":59656,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"23926:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23916:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23874:55:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":59659,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23932:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"23874:59:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59690,"nodeType":"IfStatement","src":"23870:754:110","trueBody":{"id":59689,"nodeType":"Block","src":"23935:689:110","statements":[{"assignments":[59662],"declarations":[{"constant":false,"id":59662,"mutability":"mutable","name":"reward","nameLocation":"23961:6:110","nodeType":"VariableDeclaration","scope":59689,"src":"23953:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59661,"name":"uint256","nodeType":"ElementaryTypeName","src":"23953:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59678,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59677,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59671,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":59663,"name":"postconfirmerRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60362,"src":"23970:25:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":59665,"indexExpression":{"id":59664,"name":"acceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59590,"src":"23996:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23970:41:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":59669,"indexExpression":{"baseExpression":{"id":59666,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"24012:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59668,"indexExpression":{"id":59667,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"24022:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24012:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"23970:55:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":59670,"name":"rewardPerPostconfirmationPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60366,"src":"24028:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23970:88:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"baseExpression":{"id":59673,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"24095:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59675,"indexExpression":{"id":59674,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"24105:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24095:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":59672,"name":"getAttesterStakeForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60051,"src":"24061:33:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view returns (uint256)"}},"id":59676,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24061:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23970:138:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"23953:155:110"},{"expression":{"arguments":[{"baseExpression":{"id":59682,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"24159:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59684,"indexExpression":{"id":59683,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"24169:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"24159:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59685,"name":"reward","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59662,"src":"24173:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":59686,"name":"moveTokenAddress","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60270,"src":"24181:16:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":59679,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"24126:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":59681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24142:16:110","memberName":"rewardFromDomain","nodeType":"MemberAccess","referencedDeclaration":62769,"src":"24126:32:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$_t_address_$returns$__$","typeString":"function (address,uint256,address) external"}},"id":59687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24126:72:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59688,"nodeType":"ExpressionStatement","src":"24126:72:110"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59609,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59606,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"23074:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":59607,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59598,"src":"23078:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"23088:6:110","memberName":"length","nodeType":"MemberAccess","src":"23078:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"23074:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59692,"initializationExpression":{"assignments":[59603],"declarations":[{"constant":false,"id":59603,"mutability":"mutable","name":"i","nameLocation":"23067:1:110","nodeType":"VariableDeclaration","scope":59692,"src":"23059:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59602,"name":"uint256","nodeType":"ElementaryTypeName","src":"23059:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59605,"initialValue":{"hexValue":"30","id":59604,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"23071:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"23059:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":59611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"23096:3:110","subExpression":{"id":59610,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59603,"src":"23096:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59612,"nodeType":"ExpressionStatement","src":"23096:3:110"},"nodeType":"ForStatement","src":"23054:1580:110"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":59693,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"24644:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":59695,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"24660:13:110","memberName":"rollOverEpoch","nodeType":"MemberAccess","referencedDeclaration":62663,"src":"24644:29:110","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$__$returns$__$","typeString":"function () external"}},"id":59696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"24644:31:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59697,"nodeType":"ExpressionStatement","src":"24644:31:110"}]},"documentation":{"id":59586,"nodeType":"StructuredDocumentation","src":"22544:236:110","text":"@dev nonReentrant because there is no need to reenter this function. It should be called iteratively. \n @dev Marked on the internal method to simplify risks from complex calling patterns. This also calls an external contract."},"implemented":true,"kind":"function","modifiers":[],"name":"rollOverEpoch","nameLocation":"22794:13:110","parameters":{"id":59587,"nodeType":"ParameterList","parameters":[],"src":"22807:2:110"},"returnParameters":{"id":59588,"nodeType":"ParameterList","parameters":[],"src":"22819:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":59736,"nodeType":"FunctionDefinition","src":"24959:683:110","nodes":[],"body":{"id":59735,"nodeType":"Block","src":"25084:558:110","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":59709,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59703,"src":"25123:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}],"id":59708,"name":"getCommitmentFirstSeenAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59302,"src":"25098:24:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct PCPStorage.SuperBlockCommitment memory) view returns (uint256)"}},"id":59710,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25098:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":59711,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"25148:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"25098:51:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59716,"nodeType":"IfStatement","src":"25094:94:110","trueBody":{"id":59715,"nodeType":"Block","src":"25151:37:110","statements":[{"expression":{"hexValue":"66616c7365","id":59713,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25172:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":59707,"id":59714,"nodeType":"Return","src":"25165:12:110"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59728,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59725,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":59718,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59703,"src":"25417:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}],"id":59717,"name":"getCommitmentFirstSeenAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59302,"src":"25392:24:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct PCPStorage.SuperBlockCommitment memory) view returns (uint256)"}},"id":59719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25392:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59720,"name":"getMinCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58844,"src":"25454:38:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59721,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25454:40:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25392:102:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59723,"name":"getPostconfirmerPrivilegeDuration","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58805,"src":"25510:33:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"25510:35:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25392:153:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":59726,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"25561:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":59727,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"25567:9:110","memberName":"timestamp","nodeType":"MemberAccess","src":"25561:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"25392:184:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59732,"nodeType":"IfStatement","src":"25388:227:110","trueBody":{"id":59731,"nodeType":"Block","src":"25578:37:110","statements":[{"expression":{"hexValue":"66616c7365","id":59729,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25599:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":59707,"id":59730,"nodeType":"Return","src":"25592:12:110"}]}},{"expression":{"hexValue":"74727565","id":59733,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"25631:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":59707,"id":59734,"nodeType":"Return","src":"25624:11:110"}]},"documentation":{"id":59700,"nodeType":"StructuredDocumentation","src":"24688:266:110","text":"@notice Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window\n @dev The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation"},"functionSelector":"0cf6b6bd","implemented":true,"kind":"function","modifiers":[],"name":"isWithinPostconfirmerPrivilegeDuration","nameLocation":"24968:38:110","parameters":{"id":59704,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59703,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"25035:20:110","nodeType":"VariableDeclaration","scope":59736,"src":"25007:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59702,"nodeType":"UserDefinedTypeName","pathNode":{"id":59701,"name":"SuperBlockCommitment","nameLocations":["25007:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"25007:20:110"},"referencedDeclaration":60291,"src":"25007:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"src":"25006:50:110"},"returnParameters":{"id":59707,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59706,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59736,"src":"25078:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":59705,"name":"bool","nodeType":"ElementaryTypeName","src":"25078:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"25077:6:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59941,"nodeType":"FunctionDefinition","src":"25987:4503:110","nodes":[],"body":{"id":59940,"nodeType":"Block","src":"26075:4415:110","nodes":[],"statements":[{"assignments":[59745],"declarations":[{"constant":false,"id":59745,"mutability":"mutable","name":"superBlockEpoch","nameLocation":"26093:15:110","nodeType":"VariableDeclaration","scope":59940,"src":"26085:23:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59744,"name":"uint256","nodeType":"ElementaryTypeName","src":"26085:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59749,"initialValue":{"baseExpression":{"id":59746,"name":"superBlockHeightAssignedEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60295,"src":"26111:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59748,"indexExpression":{"id":59747,"name":"superBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59739,"src":"26141:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26111:47:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26085:73:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59753,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59750,"name":"getLastPostconfirmedSuperBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59346,"src":"26172:36:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59751,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26172:38:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":59752,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26214:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26172:43:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":59812,"nodeType":"Block","src":"26307:875:110","statements":[{"assignments":[59756],"declarations":[{"constant":false,"id":59756,"mutability":"mutable","name":"previousSuperBlockEpoch","nameLocation":"26434:23:110","nodeType":"VariableDeclaration","scope":59812,"src":"26426:31:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59755,"name":"uint256","nodeType":"ElementaryTypeName","src":"26426:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59762,"initialValue":{"baseExpression":{"id":59757,"name":"superBlockHeightAssignedEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60295,"src":"26460:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59761,"indexExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59758,"name":"superBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59739,"src":"26490:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"hexValue":"31","id":59759,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26507:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"26490:18:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26460:49:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"26426:83:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59765,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59763,"name":"superBlockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59745,"src":"26527:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":59764,"name":"previousSuperBlockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59756,"src":"26545:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26527:41:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59811,"nodeType":"IfStatement","src":"26523:649:110","trueBody":{"id":59810,"nodeType":"Block","src":"26573:599:110","statements":[{"assignments":[59770],"declarations":[{"constant":false,"id":59770,"mutability":"mutable","name":"stakedAttesters","nameLocation":"26608:15:110","nodeType":"VariableDeclaration","scope":59810,"src":"26591:32:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":59768,"name":"address","nodeType":"ElementaryTypeName","src":"26591:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59769,"nodeType":"ArrayTypeName","src":"26591:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":59773,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":59771,"name":"getStakedAttestersForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60222,"src":"26626:35:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view returns (address[] memory)"}},"id":59772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"26626:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"26591:72:110"},{"body":{"id":59804,"nodeType":"Block","src":"26839:260:110","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59794,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":59785,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"26865:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59787,"indexExpression":{"id":59786,"name":"superBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59739,"src":"26877:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26865:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59791,"indexExpression":{"baseExpression":{"id":59788,"name":"stakedAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59770,"src":"26895:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59790,"indexExpression":{"id":59789,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59775,"src":"26911:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26895:18:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"26865:49:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":59792,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"26915:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"26865:56:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":59793,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26925:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"26865:61:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59803,"nodeType":"IfStatement","src":"26861:220:110","trueBody":{"id":59802,"nodeType":"Block","src":"26928:153:110","statements":[{"expression":{"id":59799,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":59795,"name":"superBlockHeightAssignedEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60295,"src":"26954:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_uint256_$","typeString":"mapping(uint256 => uint256)"}},"id":59797,"indexExpression":{"id":59796,"name":"superBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59739,"src":"26984:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"26954:47:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59798,"name":"previousSuperBlockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59756,"src":"27004:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26954:73:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59800,"nodeType":"ExpressionStatement","src":"26954:73:110"},{"id":59801,"nodeType":"Break","src":"27053:5:110"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59781,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59778,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59775,"src":"26806:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":59779,"name":"stakedAttesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59770,"src":"26810:15:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59780,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"26826:6:110","memberName":"length","nodeType":"MemberAccess","src":"26810:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"26806:26:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59805,"initializationExpression":{"assignments":[59775],"declarations":[{"constant":false,"id":59775,"mutability":"mutable","name":"i","nameLocation":"26799:1:110","nodeType":"VariableDeclaration","scope":59805,"src":"26791:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59774,"name":"uint256","nodeType":"ElementaryTypeName","src":"26791:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59777,"initialValue":{"hexValue":"30","id":59776,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"26803:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"26791:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":59783,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"26834:3:110","subExpression":{"id":59782,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59775,"src":"26834:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59784,"nodeType":"ExpressionStatement","src":"26834:3:110"},"nodeType":"ForStatement","src":"26786:313:110"},{"expression":{"id":59808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":59806,"name":"superBlockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59745,"src":"27116:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":59807,"name":"previousSuperBlockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59756,"src":"27134:23:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27116:41:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59809,"nodeType":"ExpressionStatement","src":"27116:41:110"}]}}]},"id":59813,"nodeType":"IfStatement","src":"26168:1014:110","trueBody":{"id":59754,"nodeType":"Block","src":"26217:84:110","statements":[]}},{"body":{"id":59821,"nodeType":"Block","src":"27517:203:110","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":59818,"name":"rollOverEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59699,"src":"27694:13:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":59819,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27694:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59820,"nodeType":"ExpressionStatement","src":"27694:15:110"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59814,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"27478:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59815,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27478:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":59816,"name":"superBlockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59745,"src":"27500:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27478:37:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59822,"nodeType":"WhileStatement","src":"27471:249:110"},{"assignments":[59824],"declarations":[{"constant":false,"id":59824,"mutability":"mutable","name":"supermajority","nameLocation":"27913:13:110","nodeType":"VariableDeclaration","scope":59940,"src":"27905:21:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59823,"name":"uint256","nodeType":"ElementaryTypeName","src":"27905:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59835,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"hexValue":"32","id":59825,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27930:1:110","typeDescriptions":{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},"value":"2"},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"arguments":[{"id":59827,"name":"superBlockEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59745,"src":"27948:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":59826,"name":"getTotalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60121,"src":"27934:13:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":59828,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"27934:30:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"27930:34:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":59830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"27929:36:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"33","id":59831,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27968:1:110","typeDescriptions":{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},"value":"3"},"src":"27929:40:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"hexValue":"31","id":59833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"27972:1:110","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"27929:44:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"27905:68:110"},{"assignments":[59840],"declarations":[{"constant":false,"id":59840,"mutability":"mutable","name":"attesters","nameLocation":"28000:9:110","nodeType":"VariableDeclaration","scope":59940,"src":"27983:26:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":59838,"name":"address","nodeType":"ElementaryTypeName","src":"27983:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59839,"nodeType":"ArrayTypeName","src":"27983:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":59843,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":59841,"name":"getStakedAttestersForAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60222,"src":"28012:35:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function () view returns (address[] memory)"}},"id":59842,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"28012:37:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"27983:66:110"},{"assignments":[59845],"declarations":[{"constant":false,"id":59845,"mutability":"mutable","name":"successfulPostconfirmation","nameLocation":"28316:26:110","nodeType":"VariableDeclaration","scope":59940,"src":"28311:31:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":59844,"name":"bool","nodeType":"ElementaryTypeName","src":"28311:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":59847,"initialValue":{"hexValue":"66616c7365","id":59846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"28345:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"nodeType":"VariableDeclarationStatement","src":"28311:39:110"},{"body":{"id":59921,"nodeType":"Block","src":"28407:1641:110","statements":[{"assignments":[59860],"declarations":[{"constant":false,"id":59860,"mutability":"mutable","name":"attester","nameLocation":"28429:8:110","nodeType":"VariableDeclaration","scope":59921,"src":"28421:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59859,"name":"address","nodeType":"ElementaryTypeName","src":"28421:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":59864,"initialValue":{"baseExpression":{"id":59861,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59840,"src":"28440:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59863,"indexExpression":{"id":59862,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59849,"src":"28450:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28440:12:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"28421:31:110"},{"assignments":[59867],"declarations":[{"constant":false,"id":59867,"mutability":"mutable","name":"superBlockCommitment","nameLocation":"28494:20:110","nodeType":"VariableDeclaration","scope":59921,"src":"28466:48:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"},"typeName":{"id":59866,"nodeType":"UserDefinedTypeName","pathNode":{"id":59865,"name":"SuperBlockCommitment","nameLocations":["28466:20:110"],"nodeType":"IdentifierPath","referencedDeclaration":60291,"src":"28466:20:110"},"referencedDeclaration":60291,"src":"28466:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage_ptr","typeString":"struct PCPStorage.SuperBlockCommitment"}},"visibility":"internal"}],"id":59873,"initialValue":{"baseExpression":{"baseExpression":{"id":59868,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"28517:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":59870,"indexExpression":{"id":59869,"name":"superBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59739,"src":"28529:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28517:29:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":59872,"indexExpression":{"id":59871,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59860,"src":"28547:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28517:39:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"nodeType":"VariableDeclarationStatement","src":"28466:90:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59877,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":59874,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59867,"src":"28759:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59875,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28780:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"28759:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":59876,"name":"superBlockHeight","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59739,"src":"28790:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28759:47:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59879,"nodeType":"IfStatement","src":"28755:61:110","trueBody":{"id":59878,"nodeType":"Continue","src":"28808:8:110"}},{"assignments":[59881],"declarations":[{"constant":false,"id":59881,"mutability":"mutable","name":"totalStakeOnCommitment","nameLocation":"28894:22:110","nodeType":"VariableDeclaration","scope":59921,"src":"28886:30:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59880,"name":"uint256","nodeType":"ElementaryTypeName","src":"28886:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59889,"initialValue":{"baseExpression":{"baseExpression":{"id":59882,"name":"commitmentStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60308,"src":"28919:15:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes32_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(bytes32 => uint256))"}},"id":59885,"indexExpression":{"expression":{"id":59883,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59867,"src":"28935:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59884,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28956:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"28935:27:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28919:44:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes32_$_t_uint256_$","typeString":"mapping(bytes32 => uint256)"}},"id":59888,"indexExpression":{"expression":{"id":59886,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59867,"src":"28964:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},"id":59887,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"28985:10:110","memberName":"commitment","nodeType":"MemberAccess","referencedDeclaration":60288,"src":"28964:31:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"28919:77:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"28886:110:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59892,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59890,"name":"totalStakeOnCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59881,"src":"29015:22:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":59891,"name":"supermajority","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59824,"src":"29041:13:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29015:39:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59920,"nodeType":"IfStatement","src":"29011:1027:110","trueBody":{"id":59919,"nodeType":"Block","src":"29056:982:110","statements":[{"assignments":[59894],"declarations":[{"constant":false,"id":59894,"mutability":"mutable","name":"firstSeen","nameLocation":"29270:9:110","nodeType":"VariableDeclaration","scope":59919,"src":"29262:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59893,"name":"uint256","nodeType":"ElementaryTypeName","src":"29262:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59898,"initialValue":{"arguments":[{"id":59896,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59867,"src":"29307:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}],"id":59895,"name":"getCommitmentFirstSeenAt","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59302,"src":"29282:24:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$returns$_t_uint256_$","typeString":"function (struct PCPStorage.SuperBlockCommitment memory) view returns (uint256)"}},"id":59897,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29282:46:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"29262:66:110"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59904,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":59899,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"29413:5:110","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":59900,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29419:9:110","memberName":"timestamp","nodeType":"MemberAccess","src":"29413:15:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59903,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59901,"name":"firstSeen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59894,"src":"29431:9:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":59902,"name":"minCommitmentAgeForPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60280,"src":"29443:35:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29431:47:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"29413:65:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59906,"nodeType":"IfStatement","src":"29409:76:110","trueBody":{"id":59905,"nodeType":"Break","src":"29480:5:110"}},{"expression":{"arguments":[{"id":59908,"name":"superBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59867,"src":"29537:20:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"}},{"expression":{"id":59909,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"29559:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":59910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"29563:6:110","memberName":"sender","nodeType":"MemberAccess","src":"29559:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_memory_ptr","typeString":"struct PCPStorage.SuperBlockCommitment memory"},{"typeIdentifier":"t_address","typeString":"address"}],"id":59907,"name":"_postconfirmSuperBlockCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59585,"src":"29504:32:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_SuperBlockCommitment_$60291_memory_ptr_$_t_address_$returns$__$","typeString":"function (struct PCPStorage.SuperBlockCommitment memory,address)"}},"id":59911,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"29504:66:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59912,"nodeType":"ExpressionStatement","src":"29504:66:110"},{"expression":{"id":59915,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":59913,"name":"successfulPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59845,"src":"29588:26:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"74727565","id":59914,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"29617:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"src":"29588:33:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59916,"nodeType":"ExpressionStatement","src":"29588:33:110"},{"expression":{"hexValue":"74727565","id":59917,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30019:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":59743,"id":59918,"nodeType":"Return","src":"30012:11:110"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59855,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59852,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59849,"src":"28380:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":59853,"name":"attesters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59840,"src":"28384:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":59854,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"28394:6:110","memberName":"length","nodeType":"MemberAccess","src":"28384:16:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"28380:20:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59922,"initializationExpression":{"assignments":[59849],"declarations":[{"constant":false,"id":59849,"mutability":"mutable","name":"i","nameLocation":"28373:1:110","nodeType":"VariableDeclaration","scope":59922,"src":"28365:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59848,"name":"uint256","nodeType":"ElementaryTypeName","src":"28365:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":59851,"initialValue":{"hexValue":"30","id":59850,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"28377:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"28365:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":59857,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"28402:3:110","subExpression":{"id":59856,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59849,"src":"28402:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":59858,"nodeType":"ExpressionStatement","src":"28402:3:110"},"nodeType":"ForStatement","src":"28360:1688:110"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":59930,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":59924,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"30260:27:110","subExpression":{"id":59923,"name":"successfulPostconfirmation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59845,"src":"30261:26:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":59929,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59925,"name":"getPresentEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58911,"src":"30291:15:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59926,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30291:17:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":59927,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"30311:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59928,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30311:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"30291:39:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"30260:70:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":59937,"nodeType":"IfStatement","src":"30256:206:110","trueBody":{"id":59936,"nodeType":"Block","src":"30332:130:110","statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":59931,"name":"rollOverEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59699,"src":"30346:13:110","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":59932,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30346:15:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":59933,"nodeType":"ExpressionStatement","src":"30346:15:110"},{"expression":{"hexValue":"74727565","id":59934,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30382:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"true"},"functionReturnParameters":59743,"id":59935,"nodeType":"Return","src":"30375:11:110"}]}},{"expression":{"hexValue":"66616c7365","id":59938,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"30478:5:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":59743,"id":59939,"nodeType":"Return","src":"30471:12:110"}]},"documentation":{"id":59737,"nodeType":"StructuredDocumentation","src":"25648:334:110","text":"@dev it is possible if the accepting epoch is behind the presentEpoch that heights dont obtain enough votes in the assigned epoch. \n @dev Moreover, due to the leadingBlockTolerance, the assigned epoch for a height could be ahead of the actual epoch. \n @dev solution is to move to the next epoch and count votes there"},"implemented":true,"kind":"function","modifiers":[],"name":"attemptPostconfirmOrRollover","nameLocation":"25996:28:110","parameters":{"id":59740,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59739,"mutability":"mutable","name":"superBlockHeight","nameLocation":"26033:16:110","nodeType":"VariableDeclaration","scope":59941,"src":"26025:24:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59738,"name":"uint256","nodeType":"ElementaryTypeName","src":"26025:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"26024:26:110"},"returnParameters":{"id":59743,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59742,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59941,"src":"26069:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":59741,"name":"bool","nodeType":"ElementaryTypeName","src":"26069:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"26068:6:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":59965,"nodeType":"FunctionDefinition","src":"30800:311:110","nodes":[],"body":{"id":59964,"nodeType":"Block","src":"30930:181:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":59957,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31009:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":59956,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31001:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":59955,"name":"address","nodeType":"ElementaryTypeName","src":"31001:7:110","typeDescriptions":{}}},"id":59958,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31001:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59959,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59944,"src":"31032:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":59960,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59946,"src":"31055:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59961,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59948,"src":"31082:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":59953,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"30959:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":59954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"30975:8:110","memberName":"getStake","nodeType":"MemberAccess","referencedDeclaration":62570,"src":"30959:24:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address,address) view external returns (uint256)"}},"id":59962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"30959:145:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59952,"id":59963,"nodeType":"Return","src":"30940:164:110"}]},"documentation":{"id":59942,"nodeType":"StructuredDocumentation","src":"30712:83:110","text":"@notice Gets the stake for a given tuple (custodian, attester) at a given epoch"},"functionSelector":"7aa81c2a","implemented":true,"kind":"function","modifiers":[],"name":"getStake","nameLocation":"30809:8:110","parameters":{"id":59949,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59944,"mutability":"mutable","name":"epoch","nameLocation":"30835:5:110","nodeType":"VariableDeclaration","scope":59965,"src":"30827:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59943,"name":"uint256","nodeType":"ElementaryTypeName","src":"30827:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59946,"mutability":"mutable","name":"custodian","nameLocation":"30858:9:110","nodeType":"VariableDeclaration","scope":59965,"src":"30850:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59945,"name":"address","nodeType":"ElementaryTypeName","src":"30850:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":59948,"mutability":"mutable","name":"attester","nameLocation":"30885:8:110","nodeType":"VariableDeclaration","scope":59965,"src":"30877:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59947,"name":"address","nodeType":"ElementaryTypeName","src":"30877:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"30817:82:110"},"returnParameters":{"id":59952,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59951,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59965,"src":"30921:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59950,"name":"uint256","nodeType":"ElementaryTypeName","src":"30921:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"30920:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":59983,"nodeType":"FunctionDefinition","src":"31211:198:110","nodes":[],"body":{"id":59982,"nodeType":"Block","src":"31335:74:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":59976,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"31361:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":59977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31361:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":59978,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59968,"src":"31382:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":59979,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59970,"src":"31393:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":59975,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59965,"src":"31352:8:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":59980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31352:50:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59974,"id":59981,"nodeType":"Return","src":"31345:57:110"}]},"documentation":{"id":59966,"nodeType":"StructuredDocumentation","src":"31117:89:110","text":"@notice Gets the stake for a given tuple (custodian, attester) at the accepting epoch"},"functionSelector":"bb04bd2f","implemented":true,"kind":"function","modifiers":[],"name":"getStakeForAcceptingEpoch","nameLocation":"31220:25:110","parameters":{"id":59971,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59968,"mutability":"mutable","name":"custodian","nameLocation":"31263:9:110","nodeType":"VariableDeclaration","scope":59983,"src":"31255:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59967,"name":"address","nodeType":"ElementaryTypeName","src":"31255:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":59970,"mutability":"mutable","name":"attester","nameLocation":"31290:8:110","nodeType":"VariableDeclaration","scope":59983,"src":"31282:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59969,"name":"address","nodeType":"ElementaryTypeName","src":"31282:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31245:59:110"},"returnParameters":{"id":59974,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59973,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":59983,"src":"31326:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59972,"name":"uint256","nodeType":"ElementaryTypeName","src":"31326:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31325:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60036,"nodeType":"FunctionDefinition","src":"31543:484:110","nodes":[],"body":{"id":60035,"nodeType":"Block","src":"31654:373:110","nodes":[],"statements":[{"assignments":[59997],"declarations":[{"constant":false,"id":59997,"mutability":"mutable","name":"custodians","nameLocation":"31681:10:110","nodeType":"VariableDeclaration","scope":60035,"src":"31664:27:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":59995,"name":"address","nodeType":"ElementaryTypeName","src":"31664:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":59996,"nodeType":"ArrayTypeName","src":"31664:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":60005,"initialValue":{"arguments":[{"arguments":[{"id":60002,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"31755:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":60001,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"31747:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60000,"name":"address","nodeType":"ElementaryTypeName","src":"31747:7:110","typeDescriptions":{}}},"id":60003,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31747:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":59998,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"31694:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":59999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31710:23:110","memberName":"getRegisteredCustodians","nodeType":"MemberAccess","referencedDeclaration":62652,"src":"31694:39:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":60004,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31694:76:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"31664:106:110"},{"assignments":[60007],"declarations":[{"constant":false,"id":60007,"mutability":"mutable","name":"totalStake","nameLocation":"31788:10:110","nodeType":"VariableDeclaration","scope":60035,"src":"31780:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60006,"name":"uint256","nodeType":"ElementaryTypeName","src":"31780:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60009,"initialValue":{"hexValue":"30","id":60008,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31801:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"31780:22:110"},{"body":{"id":60031,"nodeType":"Block","src":"31860:134:110","statements":[{"expression":{"id":60029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60021,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60007,"src":"31929:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":60023,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59986,"src":"31952:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":60024,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59997,"src":"31959:10:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":60026,"indexExpression":{"id":60025,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60011,"src":"31970:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"31959:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60027,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59988,"src":"31974:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60022,"name":"getStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59965,"src":"31943:8:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address,address) view returns (uint256)"}},"id":60028,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"31943:40:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31929:54:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60030,"nodeType":"ExpressionStatement","src":"31929:54:110"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60017,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60014,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60011,"src":"31832:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":60015,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":59997,"src":"31836:10:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":60016,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"31847:6:110","memberName":"length","nodeType":"MemberAccess","src":"31836:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"31832:21:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60032,"initializationExpression":{"assignments":[60011],"declarations":[{"constant":false,"id":60011,"mutability":"mutable","name":"i","nameLocation":"31825:1:110","nodeType":"VariableDeclaration","scope":60032,"src":"31817:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60010,"name":"uint256","nodeType":"ElementaryTypeName","src":"31817:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60013,"initialValue":{"hexValue":"30","id":60012,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"31829:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"31817:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60019,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"31855:3:110","subExpression":{"id":60018,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60011,"src":"31855:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60020,"nodeType":"ExpressionStatement","src":"31855:3:110"},"nodeType":"ForStatement","src":"31812:182:110"},{"expression":{"id":60033,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60007,"src":"32010:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":59992,"id":60034,"nodeType":"Return","src":"32003:17:110"}]},"documentation":{"id":59984,"nodeType":"StructuredDocumentation","src":"31415:64:110","text":"@notice Gets the stake for a given attester at a given epoch"},"functionSelector":"ba26513e","implemented":true,"kind":"function","modifiers":[],"name":"getAttesterStake","nameLocation":"31552:16:110","parameters":{"id":59989,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59986,"mutability":"mutable","name":"epoch","nameLocation":"31586:5:110","nodeType":"VariableDeclaration","scope":60036,"src":"31578:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59985,"name":"uint256","nodeType":"ElementaryTypeName","src":"31578:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":59988,"mutability":"mutable","name":"attester","nameLocation":"31609:8:110","nodeType":"VariableDeclaration","scope":60036,"src":"31601:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":59987,"name":"address","nodeType":"ElementaryTypeName","src":"31601:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"31568:55:110"},"returnParameters":{"id":59992,"nodeType":"ParameterList","parameters":[{"constant":false,"id":59991,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60036,"src":"31645:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":59990,"name":"uint256","nodeType":"ElementaryTypeName","src":"31645:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"31644:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60051,"nodeType":"FunctionDefinition","src":"32108:176:110","nodes":[],"body":{"id":60050,"nodeType":"Block","src":"32213:71:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":60045,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"32247:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":60046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32247:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60047,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60039,"src":"32268:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60044,"name":"getAttesterStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60036,"src":"32230:16:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":60048,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32230:47:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60043,"id":60049,"nodeType":"Return","src":"32223:54:110"}]},"documentation":{"id":60037,"nodeType":"StructuredDocumentation","src":"32033:70:110","text":"@notice Gets the stake for a given attester at the accepting epoch"},"functionSelector":"491d0467","implemented":true,"kind":"function","modifiers":[],"name":"getAttesterStakeForAcceptingEpoch","nameLocation":"32117:33:110","parameters":{"id":60040,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60039,"mutability":"mutable","name":"attester","nameLocation":"32168:8:110","nodeType":"VariableDeclaration","scope":60051,"src":"32160:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60038,"name":"address","nodeType":"ElementaryTypeName","src":"32160:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"32150:32:110"},"returnParameters":{"id":60043,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60042,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60051,"src":"32204:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60041,"name":"uint256","nodeType":"ElementaryTypeName","src":"32204:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32203:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60072,"nodeType":"FunctionDefinition","src":"32361:287:110","nodes":[],"body":{"id":60071,"nodeType":"Block","src":"32474:174:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":60065,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"32562:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":60064,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32554:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60063,"name":"address","nodeType":"ElementaryTypeName","src":"32554:7:110","typeDescriptions":{}}},"id":60066,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32554:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":60067,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60054,"src":"32595:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60068,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60056,"src":"32618:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":60061,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"32503:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":60062,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32519:17:110","memberName":"getCustodianStake","nodeType":"MemberAccess","referencedDeclaration":62616,"src":"32503:33:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (address,uint256,address) view external returns (uint256)"}},"id":60069,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32503:138:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60060,"id":60070,"nodeType":"Return","src":"32484:157:110"}]},"documentation":{"id":60052,"nodeType":"StructuredDocumentation","src":"32290:66:110","text":"@notice Gets the stake for a given custodian for a given epoch"},"functionSelector":"1de38fe1","implemented":true,"kind":"function","modifiers":[],"name":"getCustodianStake","nameLocation":"32370:17:110","parameters":{"id":60057,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60054,"mutability":"mutable","name":"epoch","nameLocation":"32405:5:110","nodeType":"VariableDeclaration","scope":60072,"src":"32397:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60053,"name":"uint256","nodeType":"ElementaryTypeName","src":"32397:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60056,"mutability":"mutable","name":"custodian","nameLocation":"32428:9:110","nodeType":"VariableDeclaration","scope":60072,"src":"32420:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60055,"name":"address","nodeType":"ElementaryTypeName","src":"32420:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"32387:56:110"},"returnParameters":{"id":60060,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60059,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60072,"src":"32465:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60058,"name":"uint256","nodeType":"ElementaryTypeName","src":"32465:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32464:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60121,"nodeType":"FunctionDefinition","src":"32654:607:110","nodes":[],"body":{"id":60120,"nodeType":"Block","src":"32736:525:110","nodes":[],"statements":[{"assignments":[60083],"declarations":[{"constant":false,"id":60083,"mutability":"mutable","name":"custodians","nameLocation":"32916:10:110","nodeType":"VariableDeclaration","scope":60120,"src":"32899:27:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60081,"name":"address","nodeType":"ElementaryTypeName","src":"32899:7:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60082,"nodeType":"ArrayTypeName","src":"32899:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"id":60091,"initialValue":{"arguments":[{"arguments":[{"id":60088,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"32990:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":60087,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"32982:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60086,"name":"address","nodeType":"ElementaryTypeName","src":"32982:7:110","typeDescriptions":{}}},"id":60089,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32982:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":60084,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"32929:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":60085,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"32945:23:110","memberName":"getRegisteredCustodians","nodeType":"MemberAccess","referencedDeclaration":62652,"src":"32929:39:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":60090,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"32929:76:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"nodeType":"VariableDeclarationStatement","src":"32899:106:110"},{"assignments":[60093],"declarations":[{"constant":false,"id":60093,"mutability":"mutable","name":"totalStake","nameLocation":"33023:10:110","nodeType":"VariableDeclaration","scope":60120,"src":"33015:18:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60092,"name":"uint256","nodeType":"ElementaryTypeName","src":"33015:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60095,"initialValue":{"hexValue":"30","id":60094,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33036:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"33015:22:110"},{"body":{"id":60116,"nodeType":"Block","src":"33095:133:110","statements":[{"expression":{"id":60114,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60107,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60093,"src":"33164:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"arguments":[{"id":60109,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60074,"src":"33196:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"baseExpression":{"id":60110,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60083,"src":"33203:10:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":60112,"indexExpression":{"id":60111,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60097,"src":"33214:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"33203:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60108,"name":"getCustodianStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60072,"src":"33178:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":60113,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33178:39:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33164:53:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60115,"nodeType":"ExpressionStatement","src":"33164:53:110"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":60100,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60097,"src":"33067:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":60101,"name":"custodians","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60083,"src":"33071:10:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"id":60102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"33082:6:110","memberName":"length","nodeType":"MemberAccess","src":"33071:17:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33067:21:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":60117,"initializationExpression":{"assignments":[60097],"declarations":[{"constant":false,"id":60097,"mutability":"mutable","name":"i","nameLocation":"33060:1:110","nodeType":"VariableDeclaration","scope":60117,"src":"33052:9:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60096,"name":"uint256","nodeType":"ElementaryTypeName","src":"33052:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":60099,"initialValue":{"hexValue":"30","id":60098,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"33064:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"33052:13:110"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":60105,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"33090:3:110","subExpression":{"id":60104,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60097,"src":"33090:1:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60106,"nodeType":"ExpressionStatement","src":"33090:3:110"},"nodeType":"ForStatement","src":"33047:181:110"},{"expression":{"id":60118,"name":"totalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60093,"src":"33244:10:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60078,"id":60119,"nodeType":"Return","src":"33237:17:110"}]},"functionSelector":"45367f23","implemented":true,"kind":"function","modifiers":[],"name":"getTotalStake","nameLocation":"32663:13:110","parameters":{"id":60075,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60074,"mutability":"mutable","name":"epoch","nameLocation":"32694:5:110","nodeType":"VariableDeclaration","scope":60121,"src":"32686:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60073,"name":"uint256","nodeType":"ElementaryTypeName","src":"32686:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32676:29:110"},"returnParameters":{"id":60078,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60077,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60121,"src":"32727:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60076,"name":"uint256","nodeType":"ElementaryTypeName","src":"32727:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"32726:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60135,"nodeType":"FunctionDefinition","src":"33339:180:110","nodes":[],"body":{"id":60134,"nodeType":"Block","src":"33446:73:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":60129,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"33481:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":60130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33481:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":60131,"name":"custodian","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60123,"src":"33502:9:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":60128,"name":"getCustodianStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60072,"src":"33463:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_address_$returns$_t_uint256_$","typeString":"function (uint256,address) view returns (uint256)"}},"id":60132,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33463:49:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60127,"id":60133,"nodeType":"Return","src":"33456:56:110"}]},"functionSelector":"d440116d","implemented":true,"kind":"function","modifiers":[],"name":"getCustodianStakeForAcceptingEpoch","nameLocation":"33348:34:110","parameters":{"id":60124,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60123,"mutability":"mutable","name":"custodian","nameLocation":"33400:9:110","nodeType":"VariableDeclaration","scope":60135,"src":"33392:17:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60122,"name":"address","nodeType":"ElementaryTypeName","src":"33392:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"33382:33:110"},"returnParameters":{"id":60127,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60126,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60135,"src":"33437:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60125,"name":"uint256","nodeType":"ElementaryTypeName","src":"33437:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33436:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60146,"nodeType":"FunctionDefinition","src":"33525:158:110","nodes":[],"body":{"id":60145,"nodeType":"Block","src":"33625:58:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":60141,"name":"getAcceptingEpoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58925,"src":"33656:17:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":60142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33656:19:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":60140,"name":"getTotalStake","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60121,"src":"33642:13:110","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_uint256_$","typeString":"function (uint256) view returns (uint256)"}},"id":60143,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"33642:34:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60139,"id":60144,"nodeType":"Return","src":"33635:41:110"}]},"functionSelector":"14e38026","implemented":true,"kind":"function","modifiers":[],"name":"getTotalStakeForAcceptingEpoch","nameLocation":"33534:30:110","parameters":{"id":60136,"nodeType":"ParameterList","parameters":[],"src":"33564:2:110"},"returnParameters":{"id":60139,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60138,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60146,"src":"33612:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60137,"name":"uint256","nodeType":"ElementaryTypeName","src":"33612:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33611:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60159,"nodeType":"FunctionDefinition","src":"33689:155:110","nodes":[],"body":{"id":60158,"nodeType":"Block","src":"33785:59:110","nodes":[],"statements":[{"expression":{"id":60156,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60154,"name":"rewardPerAttestationPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60364,"src":"33795:25:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60155,"name":"rewardPerPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60148,"src":"33823:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33795:42:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60157,"nodeType":"ExpressionStatement","src":"33795:42:110"}]},"functionSelector":"0d39f7f0","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":60151,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"33767:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":60152,"kind":"modifierInvocation","modifierName":{"id":60150,"name":"onlyRole","nameLocations":["33758:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"33758:8:110"},"nodeType":"ModifierInvocation","src":"33758:26:110"}],"name":"setRewardPerAttestationPoint","nameLocation":"33698:28:110","parameters":{"id":60149,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60148,"mutability":"mutable","name":"rewardPerPoint","nameLocation":"33735:14:110","nodeType":"VariableDeclaration","scope":60159,"src":"33727:22:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60147,"name":"uint256","nodeType":"ElementaryTypeName","src":"33727:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33726:24:110"},"returnParameters":{"id":60153,"nodeType":"ParameterList","parameters":[],"src":"33785:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60172,"nodeType":"FunctionDefinition","src":"33850:165:110","nodes":[],"body":{"id":60171,"nodeType":"Block","src":"33951:64:110","nodes":[],"statements":[{"expression":{"id":60169,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":60167,"name":"rewardPerPostconfirmationPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60366,"src":"33961:30:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":60168,"name":"rewardPerPoint","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60161,"src":"33994:14:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"33961:47:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":60170,"nodeType":"ExpressionStatement","src":"33961:47:110"}]},"functionSelector":"57342282","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":60164,"name":"COMMITMENT_ADMIN","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":58505,"src":"33933:16:110","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"id":60165,"kind":"modifierInvocation","modifierName":{"id":60163,"name":"onlyRole","nameLocations":["33924:8:110"],"nodeType":"IdentifierPath","referencedDeclaration":39143,"src":"33924:8:110"},"nodeType":"ModifierInvocation","src":"33924:26:110"}],"name":"setRewardPerPostconfirmationPoint","nameLocation":"33859:33:110","parameters":{"id":60162,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60161,"mutability":"mutable","name":"rewardPerPoint","nameLocation":"33901:14:110","nodeType":"VariableDeclaration","scope":60172,"src":"33893:22:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60160,"name":"uint256","nodeType":"ElementaryTypeName","src":"33893:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"33892:24:110"},"returnParameters":{"id":60166,"nodeType":"ParameterList","parameters":[],"src":"33951:0:110"},"scope":60258,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":60189,"nodeType":"FunctionDefinition","src":"34093:157:110","nodes":[],"body":{"id":60188,"nodeType":"Block","src":"34189:61:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":60182,"name":"attesterRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60356,"src":"34206:20:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":60184,"indexExpression":{"id":60183,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60175,"src":"34227:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34206:27:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60186,"indexExpression":{"id":60185,"name":"attester","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60177,"src":"34234:8:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34206:37:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60181,"id":60187,"nodeType":"Return","src":"34199:44:110"}]},"documentation":{"id":60173,"nodeType":"StructuredDocumentation","src":"34021:67:110","text":"@notice Gets the reward points for an attester in a given epoch"},"functionSelector":"6978ab12","implemented":true,"kind":"function","modifiers":[],"name":"getAttesterRewardPoints","nameLocation":"34102:23:110","parameters":{"id":60178,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60175,"mutability":"mutable","name":"epoch","nameLocation":"34134:5:110","nodeType":"VariableDeclaration","scope":60189,"src":"34126:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60174,"name":"uint256","nodeType":"ElementaryTypeName","src":"34126:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60177,"mutability":"mutable","name":"attester","nameLocation":"34149:8:110","nodeType":"VariableDeclaration","scope":60189,"src":"34141:16:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60176,"name":"address","nodeType":"ElementaryTypeName","src":"34141:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34125:33:110"},"returnParameters":{"id":60181,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60180,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60189,"src":"34180:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60179,"name":"uint256","nodeType":"ElementaryTypeName","src":"34180:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34179:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60206,"nodeType":"FunctionDefinition","src":"34336:177:110","nodes":[],"body":{"id":60205,"nodeType":"Block","src":"34442:71:110","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":60199,"name":"postconfirmerRewardPoints","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60362,"src":"34459:25:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(uint256 => mapping(address => uint256))"}},"id":60201,"indexExpression":{"id":60200,"name":"epoch","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60192,"src":"34485:5:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34459:32:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":60203,"indexExpression":{"id":60202,"name":"postconfirmer","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60194,"src":"34492:13:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34459:47:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":60198,"id":60204,"nodeType":"Return","src":"34452:54:110"}]},"documentation":{"id":60190,"nodeType":"StructuredDocumentation","src":"34260:71:110","text":"@notice Gets the reward points for a postconfirmer in a given epoch"},"functionSelector":"ed8a1d59","implemented":true,"kind":"function","modifiers":[],"name":"getPostconfirmerRewardPoints","nameLocation":"34345:28:110","parameters":{"id":60195,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60192,"mutability":"mutable","name":"epoch","nameLocation":"34382:5:110","nodeType":"VariableDeclaration","scope":60206,"src":"34374:13:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60191,"name":"uint256","nodeType":"ElementaryTypeName","src":"34374:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":60194,"mutability":"mutable","name":"postconfirmer","nameLocation":"34397:13:110","nodeType":"VariableDeclaration","scope":60206,"src":"34389:21:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":60193,"name":"address","nodeType":"ElementaryTypeName","src":"34389:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"34373:38:110"},"returnParameters":{"id":60198,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60197,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60206,"src":"34433:7:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60196,"name":"uint256","nodeType":"ElementaryTypeName","src":"34433:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34432:9:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60222,"nodeType":"FunctionDefinition","src":"34600:177:110","nodes":[],"body":{"id":60221,"nodeType":"Block","src":"34686:91:110","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":60217,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"34763:4:110","typeDescriptions":{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_PCP_$60258","typeString":"contract PCP"}],"id":60216,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"34755:7:110","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":60215,"name":"address","nodeType":"ElementaryTypeName","src":"34755:7:110","typeDescriptions":{}}},"id":60218,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34755:13:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":60213,"name":"stakingContract","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60268,"src":"34703:15:110","typeDescriptions":{"typeIdentifier":"t_contract$_IMovementStaking_$62796","typeString":"contract IMovementStaking"}},"id":60214,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34719:35:110","memberName":"getStakedAttestersForAcceptingEpoch","nodeType":"MemberAccess","referencedDeclaration":62744,"src":"34703:51:110","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_array$_t_address_$dyn_memory_ptr_$","typeString":"function (address) view external returns (address[] memory)"}},"id":60219,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"34703:66:110","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}},"functionReturnParameters":60212,"id":60220,"nodeType":"Return","src":"34696:73:110"}]},"documentation":{"id":60207,"nodeType":"StructuredDocumentation","src":"34519:76:110","text":"@notice Gets the attesters who have stake in the current accepting epoch"},"functionSelector":"aa0d6fcd","implemented":true,"kind":"function","modifiers":[],"name":"getStakedAttestersForAcceptingEpoch","nameLocation":"34609:35:110","parameters":{"id":60208,"nodeType":"ParameterList","parameters":[],"src":"34644:2:110"},"returnParameters":{"id":60212,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60211,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60222,"src":"34668:16:110","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[]"},"typeName":{"baseType":{"id":60209,"name":"address","nodeType":"ElementaryTypeName","src":"34668:7:110","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"id":60210,"nodeType":"ArrayTypeName","src":"34668:9:110","typeDescriptions":{"typeIdentifier":"t_array$_t_address_$dyn_storage_ptr","typeString":"address[]"}},"visibility":"internal"}],"src":"34667:18:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":60240,"nodeType":"FunctionDefinition","src":"34783:133:110","nodes":[],"body":{"id":60239,"nodeType":"Block","src":"34849:67:110","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":60229,"name":"commitments","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60302,"src":"34866:11:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(address => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":60231,"indexExpression":{"id":60230,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60224,"src":"34878:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34866:19:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(address => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":60234,"indexExpression":{"expression":{"id":60232,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"34886:3:110","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":60233,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"34890:6:110","memberName":"sender","nodeType":"MemberAccess","src":"34886:10:110","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"34866:31:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":60235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"34898:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"34866:38:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":60236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"34908:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"34866:43:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":60228,"id":60238,"nodeType":"Return","src":"34859:50:110"}]},"functionSelector":"e4a3fb74","implemented":true,"kind":"function","modifiers":[],"name":"isCommitted","nameLocation":"34792:11:110","parameters":{"id":60225,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60224,"mutability":"mutable","name":"height","nameLocation":"34812:6:110","nodeType":"VariableDeclaration","scope":60240,"src":"34804:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60223,"name":"uint256","nodeType":"ElementaryTypeName","src":"34804:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34803:16:110"},"returnParameters":{"id":60228,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60227,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60240,"src":"34843:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60226,"name":"bool","nodeType":"ElementaryTypeName","src":"34843:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34842:6:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":60257,"nodeType":"FunctionDefinition","src":"34922:180:110","nodes":[],"body":{"id":60256,"nodeType":"Block","src":"34992:110:110","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":60254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":60247,"name":"versionedPostconfirmedSuperBlocks","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60348,"src":"35009:33:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$_$","typeString":"mapping(uint256 => mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref))"}},"id":60249,"indexExpression":{"id":60248,"name":"postconfirmedSuperBlocksVersion","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60350,"src":"35043:31:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35009:66:110","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_SuperBlockCommitment_$60291_storage_$","typeString":"mapping(uint256 => struct PCPStorage.SuperBlockCommitment storage ref)"}},"id":60251,"indexExpression":{"id":60250,"name":"height","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":60242,"src":"35076:6:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"35009:74:110","typeDescriptions":{"typeIdentifier":"t_struct$_SuperBlockCommitment_$60291_storage","typeString":"struct PCPStorage.SuperBlockCommitment storage ref"}},"id":60252,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"35084:6:110","memberName":"height","nodeType":"MemberAccess","referencedDeclaration":60286,"src":"35009:81:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":60253,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"35094:1:110","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"35009:86:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":60246,"id":60255,"nodeType":"Return","src":"35002:93:110"}]},"functionSelector":"ec23ec2e","implemented":true,"kind":"function","modifiers":[],"name":"isPostconfirmed","nameLocation":"34931:15:110","parameters":{"id":60243,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60242,"mutability":"mutable","name":"height","nameLocation":"34955:6:110","nodeType":"VariableDeclaration","scope":60257,"src":"34947:14:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":60241,"name":"uint256","nodeType":"ElementaryTypeName","src":"34947:7:110","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"34946:16:110"},"returnParameters":{"id":60246,"nodeType":"ParameterList","parameters":[{"constant":false,"id":60245,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":60257,"src":"34986:4:110","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":60244,"name":"bool","nodeType":"ElementaryTypeName","src":"34986:4:110","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"34985:6:110"},"scope":60258,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":58493,"name":"Initializable","nameLocations":["561:13:110"],"nodeType":"IdentifierPath","referencedDeclaration":39702,"src":"561:13:110"},"id":58494,"nodeType":"InheritanceSpecifier","src":"561:13:110"},{"baseName":{"id":58495,"name":"BaseSettlement","nameLocations":["576:14:110"],"nodeType":"IdentifierPath","referencedDeclaration":60525,"src":"576:14:110"},"id":58496,"nodeType":"InheritanceSpecifier","src":"576:14:110"},{"baseName":{"id":58497,"name":"PCPStorage","nameLocations":["592:10:110"],"nodeType":"IdentifierPath","referencedDeclaration":60371,"src":"592:10:110"},"id":58498,"nodeType":"InheritanceSpecifier","src":"592:10:110"},{"baseName":{"id":58499,"name":"IPCP","nameLocations":["604:4:110"],"nodeType":"IdentifierPath","referencedDeclaration":60470,"src":"604:4:110"},"id":58500,"nodeType":"InheritanceSpecifier","src":"604:4:110"}],"canonicalName":"PCP","contractDependencies":[],"contractKind":"contract","fullyImplemented":true,"linearizedBaseContracts":[60258,60470,60371,60525,39884,42904,39448,41211,46535,41590,40716,39702],"name":"PCP","nameLocation":"554:3:110","scope":60259,"usedErrors":[39465,39468,39729,39734,41517,41520,43099,43112,44330,44623,58513,58516,58519,58522,60393,60395],"usedEvents":[39473,41529,41538,41547,42852,60383,60391]}],"license":"UNLICENSED"},"id":110} +======= +{"abi":[{"type":"function","name":"COMMITMENT_ADMIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TRUSTED_ATTESTER","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":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"attesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchGrantCommitmentAdmin","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchGrantTrustedAttester","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitmentFirstSeenAt","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitmentStake","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitement","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitments","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"createSuperBlockCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"pure"},{"type":"function","name":"forceLatestCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCommitmentByAttester","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getCommitmentFirstSeenAt","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxTolerableSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmedCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPresentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSuperBlockHeightAssignedEpoch","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"grantCommitmentAdmin","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantTrustedAttester","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_stakingContract","type":"address","internalType":"contract IMovementStaking"},{"name":"_lastPostconfirmedSuperBlockHeight","type":"uint256","internalType":"uint256"},{"name":"_leadingSuperBlockTolerance","type":"uint256","internalType":"uint256"},{"name":"_epochDuration","type":"uint256","internalType":"uint256"},{"name":"_custodians","type":"address[]","internalType":"address[]"},{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"},{"name":"_moveTokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isCommitted","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPostconfirmed","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithinPostconfirmerPrivilegeDuration","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"leadingSuperBlockTolerance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"moveTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"openAttestationEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmSuperBlocksAndRollover","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"postconfirmedAtL1BlockHeight","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockTimestamp","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockTimestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedBy","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"attester","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocks","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocksVersion","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardPerAttestationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rewardPerPostconfirmationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinCommitmentAgeForPostconfirmation","inputs":[{"name":"_minCommitmentAgeForPostconfirmation","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOpenAttestationEnabled","inputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmedCommitmentAtBlockHeight","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerDuration","inputs":[{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerPrivilegeDuration","inputs":[{"name":"_postconfirmerPrivilegeDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerAttestationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerPostconfirmationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakingContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMovementStaking"}],"stateMutability":"view"},{"type":"function","name":"submitBatchSuperBlockCommitment","inputs":[{"name":"superBlockCommitments","type":"tuple[]","internalType":"struct PCPStorage.SuperBlockCommitment[]","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitSuperBlockCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"superBlockHeightAssignedEpoch","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"versionedPostconfirmedSuperBlocks","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SuperBlockCommitmentSubmitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"attesterStake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SuperBlockPostconfirmed","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"height","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AttesterAlreadyCommitted","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLong","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLongForEpoch","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnacceptableSuperBlockCommitment","inputs":[]},{"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong","inputs":[]},{"type":"error","name":"postconfirmerPrivilegeDurationTooLong","inputs":[]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b50608051613c4561003d600039600081816126e60152818161270f01526128530152613c456000f3fe6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;1171:4:21;1128:48;;545:34560:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;11507:242:107;;;;;;;;;;-1:-1:-1;11507:242:107;;;;;:::i;:::-;;:::i;:::-;;;;1210:13:140;;1192:32;;1280:4;1268:17;;;1262:24;1240:20;;;1233:54;1331:17;;;1325:24;1303:20;;;1296:54;1180:2;1165:18;11507:242:107;968:388:140;6474:129:107;;;;;;;;;;-1:-1:-1;6566:30:107;;6474:129;;;1507:25:140;;;1495:2;1480:18;6474:129:107;1361:177:140;1406:41:108;;;;;;;;;;;;;;;;3846:77;;;;;;;;;;-1:-1:-1;3846:77:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;18935:308:107;;;;;;;;;;-1:-1:-1;18935:308:107;;;;;:::i;:::-;;:::i;:::-;;24959:683;;;;;;;;;;-1:-1:-1;24959:683:107;;;;;:::i;:::-;;:::i;33689:155::-;;;;;;;;;;-1:-1:-1;33689:155:107;;;;;:::i;:::-;;:::i;13996:337::-;;;;;;;;;;-1:-1:-1;13996:337:107;;;;;:::i;:::-;;:::i;2789:1624::-;;;;;;;;;;-1:-1:-1;2789:1624:107;;;;;:::i;:::-;;:::i;5413:111::-;;;;;;;;;;-1:-1:-1;5496:21:107;;5413:111;;33525:158;;;;;;;;;;;;;:::i;5318:107:108:-;;;;;;;;;;-1:-1:-1;5318:107:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;32361:287:107;;;;;;;;;;-1:-1:-1;32361:287:107;;;;;:::i;:::-;;:::i;7053:533::-;;;;;;;;;;-1:-1:-1;7053:533:107;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;17045:115:107:-;;;;;;;;;;;;;:::i;19249:200::-;;;;;;;;;;-1:-1:-1;19249:200:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;19402:31:107;;19368:66;;:33;:66;;;;;:74;;;;;;;;;;19361:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19249:200;5246:136:19;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;18335:405:107:-;;;;;;;;;;-1:-1:-1;18335:405:107;;;;;:::i;:::-;;:::i;9951:929::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6818:32:140;;;6800:51;;6788:2;6773:18;9951:929:107;6654:203:140;6348:245:19;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;8946:165:107:-;;;;;;;;;;;;;:::i;8574:133::-;;;;;;;;;;;;;:::i;4950:118:108:-;;;;;;;;;;-1:-1:-1;4950:118:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7415:25:140;;;7471:2;7456:18;;7449:34;;;;7499:18;;;7492:34;7403:2;7388:18;4950:118:108;7213:319:140;4837:570:107;;;;;;;;;;-1:-1:-1;4837:570:107;;;;;:::i;:::-;;:::i;32654:607::-;;;;;;;;;;-1:-1:-1;32654:607:107;;;;;:::i;:::-;;:::i;32108:176::-;;;;;;;;;;-1:-1:-1;32108:176:107;;;;;:::i;:::-;;:::i;1866:326::-;;;;;;;;;;-1:-1:-1;1866:326:107;;;;;:::i;:::-;;:::i;1978:36:108:-;;;;;;;;;;;;;;;;4161:214:21;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;14774:209:107:-;;;;;;;;;;-1:-1:-1;14774:209:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;14947:19:107;;;;:11;:19;;;;;;;;-1:-1:-1;;;;;14947:29:107;;;;;;;;;;;;;14940:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14774:209;2261:45:108;;;;;;;;;;;;;;;;33850:165:107;;;;;;;;;;-1:-1:-1;33850:165:107;;;;;:::i;:::-;;:::i;405:31:108:-;;;;;;;;;;-1:-1:-1;405:31:108;;;;-1:-1:-1;;;;;405:31:108;;;16904:135:107;;;;;;;;;;-1:-1:-1;16999:33:107;;16904:135;;8131:129;;;;;;;;;;;;;:::i;764:72::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;764:72:107;;9197:414;;;;;;;;;;;;;:::i;5480:40:108:-;;;;;;;;;;;;;;;;14339:430:107;;;;;;;;;;-1:-1:-1;14339:430:107;;;;;:::i;:::-;;:::i;34093:157::-;;;;;;;;;;-1:-1:-1;34093:157:107;;;;;:::i;:::-;34180:7;34206:27;;;:20;:27;;;;;;;;-1:-1:-1;;;;;34206:37:107;;;;;;;;;;;;;34093:157;8745:131;;;;;;;;;;;;;:::i;5168:97:108:-;;;;;;;;;;-1:-1:-1;5168:97:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;30800:311:107;;;;;;;;;;-1:-1:-1;30800:311:107;;;;;:::i;:::-;;:::i;4005:94:108:-;;;;;;;;;;-1:-1:-1;4005:94:108;;;;;:::i;:::-;;;;;;;;;;;;;;4539:109;;;;;;;;;;-1:-1:-1;4539:109:108;;;;;:::i;:::-;;;;;;;;;;;;;;654:72:107;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;654:72:107;;528:89:110;;;;;;;;;;;;;:::i;2198:136:107:-;;;;;;;;;;-1:-1:-1;2198:136:107;;;;;:::i;:::-;;:::i;2880:87:108:-;;;;;;;;;;-1:-1:-1;2880:87:108;;;;;:::i;:::-;;;;;;;;;;;;;;8331:207:107;;;;;;;;;;;;;:::i;3625:76:108:-;;;;;;;;;;-1:-1:-1;3625:76:108;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3625:76:108;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4465:195:107:-;;;;;;;;;;;;;:::i;15037:159::-;;;;;;;;;;;;;:::i;1623:237::-;;;;;;;;;;-1:-1:-1;1623:237:107;;;;;:::i;:::-;;:::i;4336:100:108:-;;;;;;;;;;-1:-1:-1;4336:100:108;;;;;:::i;:::-;;;;;;;;;;;;;;2317:49:19;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;34600:177:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7592:139::-;;;;;;;;;;-1:-1:-1;7689:35:107;;7592:139;;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;31543:484:107:-;;;;;;;;;;-1:-1:-1;31543:484:107;;;;;:::i;:::-;;:::i;31211:198::-;;;;;;;;;;-1:-1:-1;31211:198:107;;;;;:::i;:::-;;:::i;2106:50:108:-;;;;;;;;;;;;;;;;3248:105;;;;;;;;;;-1:-1:-1;3248:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2340:226:107;;;;;;;;;;-1:-1:-1;2340:226:107;;;;;:::i;:::-;;:::i;11026:250::-;;;;;;;;;;-1:-1:-1;11026:250:107;;;;;:::i;:::-;;:::i;7737:132::-;;;;;;;;;;-1:-1:-1;7737:132:107;;;;;:::i;:::-;;:::i;15520:149::-;;;;;;;;;;-1:-1:-1;15520:149:107;;;;;:::i;:::-;15599:7;15625:37;;;:29;:37;;;;;;;15520:149;5580:45:108;;;;;;;;;;;;;;;;33339:180:107;;;;;;;;;;-1:-1:-1;33339:180:107;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;3436:114:108:-;;;;;;;;;;-1:-1:-1;3436:114:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5787:464:107;;;;;;;;;;-1:-1:-1;5787:464:107;;;;;:::i;:::-;;:::i;15875:221::-;;;;;;;;;;-1:-1:-1;15875:221:107;;;;;:::i;:::-;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;15875:221;34783:133;;;;;;;;;;-1:-1:-1;34783:133:107;;;;;:::i;:::-;34843:4;34866:19;;;:11;:19;;;;;;;;34886:10;34866:31;;;;;;;:38;:43;;;34783:133;3049:105:108;;;;;;;;;;-1:-1:-1;3049:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5074:46;;;;;;;;;;;;;;;;34922:180:107;;;;;;;;;;-1:-1:-1;34922:180:107;;;;;:::i;:::-;35043:31;;34986:4;35009:66;;;:33;:66;;;;;;;;:74;;;;;;;:81;:86;;;34922:180;34336:177;;;;;;;;;;-1:-1:-1;34336:177:107;;;;;:::i;:::-;34433:7;34459:32;;;:25;:32;;;;;;;;-1:-1:-1;;;;;34459:47:107;;;;;;;;;;;;;34336:177;4718:89:108;;;;;;;;;;-1:-1:-1;4718:89:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;261:39;;;;;;;;;;-1:-1:-1;261:39:108;;;;-1:-1:-1;;;;;261:39:108;;;4855:34;;;;;;;;;;-1:-1:-1;4855:34:108;;;;;;;;1598:48;;;;;;;;;;;;;;;;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;11507:242:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;11693:49:107;;;;;;;;;;;;;;;;;;;;;;11507:242;;;;;;:::o;18935:308::-;19054:37;-1:-1:-1;;;;;;;;;;;19080:10:107;19054:7;:37::i;:::-;19033:132;;;;-1:-1:-1;;;19033:132:107;;13469:2:140;19033:132:107;;;13451:21:140;13508:2;13488:18;;;13481:30;13547:34;13527:18;;;13520:62;-1:-1:-1;;;13598:18:140;;;13591:46;13654:19;;19033:132:107;;;;;;;;;19175:61;19215:20;19175:39;:61::i;:::-;18935:308;:::o;24959:683::-;16028:27;;25078:4;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25148:1;25098:51;25094:94;;-1:-1:-1;25172:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25094:94::-;25561:15;25510:35;6566:30;;;6474:129;25510:35;7689;;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25392:102;;;;:::i;:::-;:153;;;;:::i;:::-;:184;25388:227;;;-1:-1:-1;25599:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25388:227::-;-1:-1:-1;25631:4:107;;24959:683;-1:-1:-1;24959:683:107:o;33689:155::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33795:25:107::1;:42:::0;33689:155::o;13996:337::-;14122:22;;;;;:63;;;14148:37;-1:-1:-1;;;;;;;;;;;14174:10:107;14148:7;:37::i;:::-;14101:144;;;;-1:-1:-1;;;14101:144:107;;;;;;;:::i;:::-;14255:71;14293:10;14305:20;14255:37;:71::i;2789:1624::-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;3225:33:107::1;:31;:33::i;:::-;3268:15;:34:::0;;-1:-1:-1;;;;;;3268:34:107::1;-1:-1:-1::0;;;;;3268:34:107;::::1;::::0;;::::1;::::0;;;3312:26:::1;:56:::0;;;3378:33:::1;:70:::0;;;3458:59:::1;::::0;-1:-1:-1;;;3458:59:107;;:30:::1;::::0;:59:::1;::::0;3489:14;;3505:11;;3458:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3527:32;3548:10;3527:20;:32::i;:::-;3569;3590:10;3569:20;:32::i;:::-;3611:21;:46:::0;;;3667:16:::1;:36:::0;;-1:-1:-1;;;;;;3667:36:107::1;-1:-1:-1::0;;;;;3667:36:107;::::1;;::::0;;4242:19:::1;4259:2;4242:14:::0;:19:::1;:::i;:::-;4204:35;:57:::0;4304:19:::1;4321:2;4304:14:::0;:19:::1;:::i;:::-;4271:30;:52:::0;4361:1:::1;4333:25;:29:::0;;;4372:30:::1;:34:::0;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;2789:1624:107;;;;;;;:::o;33525:158::-;33612:7;33642:34;33656:19;:17;:19::i;33642:34::-;33635:41;;33525:158;:::o;32361:287::-;32465:7;32503:15;;:138;;-1:-1:-1;;;32503:138:107;;32562:4;32503:138;;;15359:51:140;15426:18;;;15419:34;;;-1:-1:-1;;;;;15489:32:140;;;15469:18;;;15462:60;32503:15:107;;;;:33;;15332:18:140;;32503:138:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7053:533::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;6566:30:107;;7333:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;7333:47:107;;7374:4:::1;7333:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;7333:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;7333:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;;;;:::i;:::-;7293:36;:125;7289:207;;7441:44;;-1:-1:-1::0;;;7441:44:107::1;;;;;;;;;;;7289:207;-1:-1:-1::0;7505:35:107::1;:74:::0;7053:533::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;17045:115:107:-;17107:46;17142:10;17107:34;:46::i;:::-;17045:115::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;18335:405:107:-;18472:37;-1:-1:-1;;;;;;;;;;;18498:10:107;18472:7;:37::i;:::-;18451:152;;;;-1:-1:-1;;;18451:152:107;;16057:2:140;18451:152:107;;;16039:21:140;16096:2;16076:18;;;16069:30;;;16135:34;16115:18;;;16108:62;16206:34;16186:18;;;16179:62;-1:-1:-1;;;16257:19:140;;;16250:35;16302:19;;18451:152:107;15855:472:140;18451:152:107;18647:31;;18613:66;;;;:33;:66;;;;;;;;18680:27;;18613:95;;;;;;;;:118;;;;;;;;;;;;;;;;;;;;18335:405::o;9951:929::-;10000:7;10392:17;10412:27;:25;:27::i;:::-;10392:47;;10449:17;10469:19;:17;:19::i;:::-;10498:26;10527:15;;:66;;-1:-1:-1;;;10527:66:107;;10587:4;10527:66;;;6800:51:140;10449:39:107;;-1:-1:-1;10498:26:107;;-1:-1:-1;;;;;10527:15:107;;;;:51;;6773:18:140;;10527:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10527:66:107;;;;;;;;;;;;:::i;:::-;10498:95;;10607:9;:16;10627:1;10607:21;10603:69;;10659:1;10644:17;;;;;9951:929;:::o;10603:69::-;10681:26;10771:9;:16;10745:9;10756;10728:38;;;;;;;;17463:19:140;;;17507:2;17498:12;;17491:28;17544:2;17535:12;;17306:247;10728:38:107;;;;;;;;;;;;;10718:49;;;;;;10710:58;;:77;;;;:::i;:::-;10681:106;;10844:9;10854:18;10844:29;;;;;;;;:::i;:::-;;;;;;;10837:36;;;;;;9951:929;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;8946:165:107:-;9013:7;9039:15;;:65;;-1:-1:-1;;;9039:65:107;;9098:4;9039:65;;;6800:51:140;-1:-1:-1;;;;;9039:15:107;;;;:50;;6773:18:140;;9039:65:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8574:133::-;8622:7;8648:15;;:52;;-1:-1:-1;;;8648:52:107;;8694:4;8648:52;;;6800:51:140;-1:-1:-1;;;;;8648:15:107;;;;:37;;6773:18:140;;8648:52:107;6654:203:140;4837:570:107;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;5033:21:107::1;5057:15:::0;;:47:::1;::::0;-1:-1:-1;;;5057:47:107;;5098:4:::1;5057:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;5057:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;5057:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5033:71:::0;-1:-1:-1;5033:71:107;5229:26:::1;5233:22:::0;5229:1:::1;:26;:::i;:::-;:43;5225:120;;5296:38;;-1:-1:-1::0;;;5296:38:107::1;;;;;;;;;;;5225:120;-1:-1:-1::0;;5354:21:107::1;:46:::0;4837:570::o;32654:607::-;32727:7;32929:15;;:76;;-1:-1:-1;;;32929:76:107;;32990:4;32929:76;;;6800:51:140;32727:7:107;;-1:-1:-1;;;;;32929:15:107;;:39;;6773:18:140;;32929:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32929:76:107;;;;;;;;;;;;:::i;:::-;32899:106;;33015:18;33052:9;33047:181;33071:10;:17;33067:1;:21;33047:181;;;33178:39;33196:5;33203:10;33214:1;33203:13;;;;;;;;:::i;:::-;;;;;;;33178:17;:39::i;:::-;33164:53;;;;:::i;:::-;;-1:-1:-1;33090:3:107;;33047:181;;;-1:-1:-1;33244:10:107;32654:607;-1:-1:-1;;;32654:607:107:o;32108:176::-;32204:7;32230:47;32247:19;:17;:19::i;:::-;32268:8;32230:16;:47::i;1866:326::-;1966:39;2362:4:19;1994:10:107;1966:7;:39::i;:::-;1945:120;;;;-1:-1:-1;;;1945:120:107;;;;;;;:::i;:::-;2080:9;2075:111;2099:8;:15;2095:1;:19;2075:111;;;2135:40;-1:-1:-1;;;;;;;;;;;2163:8:107;2172:1;2163:11;;;;;;;;:::i;:::-;;;;;;;2135:9;:40::i;:::-;2116:3;;2075:111;;;;1866:326;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;33850:165:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33961:30:107::1;:47:::0;33850:165::o;8131:129::-;8180:7;8206:15;;:47;;-1:-1:-1;;;8206:47:107;;8247:4;8206:47;;;6800:51:140;-1:-1:-1;;;;;8206:15:107;;;;:32;;6773:18:140;;8206:47:107;6654:203:140;9197:414:107;9255:7;9471:15;;:47;;-1:-1:-1;;;9471:47:107;;9512:4;9471:47;;;6800:51:140;9296:15:107;;9255:7;;-1:-1:-1;;;;;9471:15:107;;;;:32;;6773:18:140;;9471:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9457:61;;:11;:61;:::i;:::-;9426:92;;9582:21;;9559:20;:44;;;;:::i;:::-;9535:69;;:20;:69;:::i;:::-;9528:76;;;;9197:414;:::o;14339:430::-;14471:22;;;;;:63;;;14497:37;-1:-1:-1;;;;;;;;;;;14523:10:107;14497:7;:37::i;:::-;14450:144;;;;-1:-1:-1;;;14450:144:107;;;;;;;:::i;:::-;14609:9;14604:159;14628:21;:28;14624:1;:32;14604:159;;;14677:75;14715:10;14727:21;14749:1;14727:24;;;;;;;;:::i;:::-;;;;;;;14677:37;:75::i;:::-;14658:3;;14604:159;;8745:131;8795:7;8821:15;;:48;;-1:-1:-1;;;8821:48:107;;8863:4;8821:48;;;6800:51:140;-1:-1:-1;;;;;8821:15:107;;;;:33;;6773:18:140;;8821:48:107;6654:203:140;30800:311:107;30921:7;30959:15;;:145;;-1:-1:-1;;;30959:145:107;;31009:4;30959:145;;;18614:51:140;18681:18;;;18674:34;;;-1:-1:-1;;;;;18744:32:140;;;18724:18;;;18717:60;18813:32;;;18793:18;;;18786:60;30959:15:107;;;;:24;;18586:19:140;;30959:145:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30940:164;30800:311;-1:-1:-1;;;;30800:311:107:o;528:89:110:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;587:23:110::1;:21;:23::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;528:89:110:o;2198:136:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2290:37:107::1;-1:-1:-1::0;;;;;;;;;;;2318:8:107::1;2290:9;:37::i;8331:207::-:0;8381:7;8483:15;;:47;;-1:-1:-1;;;8483:47:107;;8524:4;8483:47;;;6800:51:140;8422:15:107;;-1:-1:-1;;;;;8483:15:107;;:32;;6773:18:140;;8483:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8469:61;;:11;:61;:::i;:::-;8454:77;;:11;:77;:::i;:::-;8447:84;;;8331:207;:::o;3732::19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4465:195:107:-;4523:39;2362:4:19;4551:10:107;4523:7;:39::i;:::-;4515:89;;;;-1:-1:-1;;;4515:89:107;;19059:2:140;4515:89:107;;;19041:21:140;19098:2;19078:18;;;19071:30;19137:34;19117:18;;;19110:62;-1:-1:-1;;;19188:18:140;;;19181:35;19233:19;;4515:89:107;18857:401:140;4515:89:107;4614:15;;;:39;;;-1:-1:-1;;;4614:39:107;;;;-1:-1:-1;;;;;4614:15:107;;;;:37;;:39;;;;;;;;;;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;15037:159;15101:7;15163:26;;15127:33;;:62;;;;:::i;1623:237::-;1708:39;2362:4:19;1736:10:107;1708:7;:39::i;:::-;1687:120;;;;-1:-1:-1;;;1687:120:107;;;;;;;:::i;:::-;1817:36;-1:-1:-1;;;;;;;;;;;1845:7:107;1817:9;:36::i;34600:177::-;34703:15;;:66;;-1:-1:-1;;;34703:66:107;;34763:4;34703:66;;;6800:51:140;34668:16:107;;-1:-1:-1;;;;;34703:15:107;;:51;;6773:18:140;;34703:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34703:66:107;;;;;;;;;;;;:::i;31543:484::-;31645:7;31694:15;;:76;;-1:-1:-1;;;31694:76:107;;31755:4;31694:76;;;6800:51:140;31645:7:107;;-1:-1:-1;;;;;31694:15:107;;:39;;6773:18:140;;31694:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31694:76:107;;;;;;;;;;;;:::i;:::-;31664:106;;31780:18;31817:9;31812:182;31836:10;:17;31832:1;:21;31812:182;;;31943:40;31952:5;31959:10;31970:1;31959:13;;;;;;;;:::i;:::-;;;;;;;31974:8;31943;:40::i;:::-;31929:54;;;;:::i;:::-;;-1:-1:-1;31855:3:107;;31812:182;;;-1:-1:-1;32010:10:107;31543:484;-1:-1:-1;;;;31543:484:107:o;31211:198::-;31326:7;31352:50;31361:19;:17;:19::i;:::-;31382:9;31393:8;31352;:50::i;2340:226::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2452:9:107::1;2447:113;2471:9;:16;2467:1;:20;2447:113;;;2508:41;-1:-1:-1::0;;;;;;;;;;;2536:9:107::1;2546:1;2536:12;;;;;;;;:::i;2508:41::-;2489:3;;2447:113;;11026:250:::0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;11211:15:107::1;::::0;:58:::1;::::0;-1:-1:-1;;;11211:58:107;;11253:4:::1;11211:58;::::0;::::1;19437:51:140::0;19504:18;;;19497:34;;;-1:-1:-1;;;;;11211:15:107;;::::1;::::0;:33:::1;::::0;19410:18:140;;11211:58:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11026:250:::0;;:::o;7737:132::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;7830:22:107::1;:32:::0;;-1:-1:-1;;7830:32:107::1;::::0;::::1;;::::0;;;::::1;::::0;;7737:132::o;33339:180::-;33437:7;33463:49;33481:19;:17;:19::i;:::-;33502:9;33463:17;:49::i;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5787:464:107:-:0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;7689:35:107;;6008:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;6008:47:107;;6049:4:::1;6008:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;6008:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;6008:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;;;:::i;:::-;5973:31;:125;5969:202;;6121:39;;-1:-1:-1::0;;;6121:39:107::1;;;;;;;;;;;5969:202;-1:-1:-1::0;6180:30:107::1;:64:::0;5787:464::o;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;11817:2174:107:-;12062:27;;12050:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;12050:50:107;;;;;;;;;:57;:62;12046:113;;12133:26;;-1:-1:-1;;;12133:26:107;;;;;;;;;;;12046:113;12630:27;;12601:26;;12565:33;;:62;;12601:26;12565:62;:::i;:::-;:92;12561:156;;;12680:26;;-1:-1:-1;;;12680:26:107;;;;;;;;;;;12561:156;13081:27;;13051:58;;;;:29;:58;;;;;;:63;;13047:172;;13191:17;:15;:17::i;:::-;13160:27;;13130:58;;;;:29;:58;;;;;:78;13047:172;13287:27;;13275:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;13275:50:107;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;13425:106;;13515:15;13425:27;:106::i;:::-;13593:38;13634:43;13668:8;13634:33;:43::i;:::-;13703:27;;13687:44;;;;:15;:44;;;;;;;;13732:31;;;;13687:77;;;;;;;:111;;13593:84;;-1:-1:-1;13593:84:107;;13687:77;;:44;:111;;13593:84;;13687:111;:::i;:::-;;;;-1:-1:-1;;13857:28:107;;;;;13899:31;;;;;13814:170;;19716:25:140;;;19757:18;;;19750:34;;;13857:28:107;;13814:170;;19689:18:140;13814:170:107;;;;;;;11963:2028;11817:2174;;:::o;738:128:110:-;6931:20:20;:18;:20::i;:::-;817:42:110::1;2362:4:19;848:10:110;817;:42::i;17774:485:107:-:0;18173:67;18202:33;;18238:1;18202:37;;;;:::i;:::-;18173:28;:67::i;:::-;18166:87;;17774:485;:::o;7270:387:19:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:21;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;991:117:110;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;6818:32:140;;6518:60:21;;;6800:51:140;6773:18;;6518:60:21;6654:203:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1507:25:140;;;1480:18;;6317:34:21;1361:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;623:109:110;6931:20:20;:18;:20::i;:::-;692:33:110::1;:31;:33::i;4381:197:19:-:0;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;19455:32:140;;4514:47:19;;;19437:51:140;19504:18;;;19497:34;;;19410:18;;4514:47:19;19263:274:140;16170:443:107;16285:29;;;;:21;:29;;;;;;;;:41;;;;;;;;;:46;16281:263;;16170:443;;;:::o;16281:263::-;16415:9;16428:1;16415:14;16411:133;;16170:443;;;:::o;16411:133::-;16553:29;;;;:21;:29;;;;;;;;:41;;;;;;;;:53;16170:443::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;25987:4503:107;26069:4;26111:47;;;:29;:47;;;;;;16999:33;;26168:1014;;;26426:31;26460:29;26426:31;26490:18;26507:1;26490:16;:18;:::i;:::-;26460:49;;;;;;;;;;;;26426:83;;26545:23;26527:15;:41;26523:649;;;26591:32;26626:37;:35;:37::i;:::-;26591:72;;26791:9;26786:313;26810:15;:22;26806:1;:26;26786:313;;;26865:11;:29;26877:16;26865:29;;;;;;;;;;;:49;26895:15;26911:1;26895:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;26865:49:107;-1:-1:-1;;;;;26865:49:107;;;;;;;;;;;;:56;;;26925:1;26865:61;26861:220;;26954:47;;;;:29;:47;;;;;:73;;;27053:5;;26861:220;26834:3;;26786:313;;;;27134:23;27116:41;;26573:599;26523:649;26307:875;26168:1014;27500:15;27478:19;:17;:19::i;:::-;:37;27471:249;;;27694:15;:13;:15::i;:::-;27471:249;;;27905:21;27968:1;27934:30;27948:15;27934:13;:30::i;:::-;27930:34;;:1;:34;:::i;:::-;27929:40;;;;:::i;:::-;:44;;27972:1;27929:44;:::i;:::-;27905:68;;27983:26;28012:37;:35;:37::i;:::-;27983:66;;28311:31;28365:9;28360:1688;28384:9;:16;28380:1;:20;28360:1688;;;28421:16;28440:9;28450:1;28440:12;;;;;;;;:::i;:::-;;;;;;;;;;;;28466:48;28517:29;;;:11;:29;;;;;;-1:-1:-1;;;;;28517:39:107;;;;;;;;;;28466:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28440:12;;-1:-1:-1;28466:90:107;28759:47;;28755:61;;28808:8;;;;28755:61;28935:27;;28886:30;28919:44;;;:15;:44;;;;;;;;28964:31;;;;28919:77;;;;;;;;29015:39;;;29011:1027;;16028:27;;29262:17;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;29443:35;;29431:47;;16006:83;29431:47;:::i;:::-;29413:15;:65;29409:76;;;29480:5;;;;;;29409:76;29504:66;29537:20;29559:10;29504:32;:66::i;:::-;-1:-1:-1;29617:4:107;;25987:4503;-1:-1:-1;;;;;;;;;;25987:4503:107:o;29011:1027::-;28407:1641;;;28360:1688;28402:3;;28360:1688;;;;30261:26;30260:27;:70;;;;;30311:19;:17;:19::i;:::-;30291:17;:15;:17::i;:::-;:39;30260:70;30256:206;;;30346:15;:13;:15::i;:::-;-1:-1:-1;30382:4:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;30256:206::-;-1:-1:-1;30478:5:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;2264:344:40:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;22785:1897:107:-;22897:22;22922:19;:17;:19::i;:::-;22897:44;;22951:26;22980:37;:35;:37::i;:::-;22951:66;;23059:9;23054:1580;23078:9;:16;23074:1;:20;23054:1580;;;23172:1;23119:36;;;:20;:36;;;;;23156:12;;23172:1;;23156:9;;23166:1;;23156:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23119:50:107;-1:-1:-1;;;;;23119:50:107;;;;;;;;;;;;;:54;23115:697;;;23273:14;23371:47;23405:9;23415:1;23405:12;;;;;;;;:::i;:::-;;;;;;;23371:33;:47::i;:::-;23343:25;;23290:20;:36;23311:14;23290:36;;;;;;;;;;;:50;23327:9;23337:1;23327:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23290:50:107;-1:-1:-1;;;;;23290:50:107;;;;;;;;;;;;;:78;;;;:::i;:::-;:128;;;;:::i;:::-;23563:15;;23596:12;;23273:145;;-1:-1:-1;;;;;;23563:15:107;;:32;;23596:9;;23606:1;;23596:12;;;;;;:::i;:::-;;;;;;;;;;;23618:16;;23563:72;;-1:-1:-1;;;;;;23563:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;23563:72:107;;;15359:51:140;15426:18;;;15419:34;;;23618:16:107;;15469:18:140;;;15462:60;15332:18;;23563:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23175:637;23115:697;23932:1;23874:41;;;:25;:41;;;;;23916:12;;23932:1;;23916:9;;23926:1;;23916:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23874:55:107;-1:-1:-1;;;;;23874:55:107;;;;;;;;;;;;;:59;23870:754;;;23953:14;24061:47;24095:9;24105:1;24095:12;;;;;;;;:::i;24061:47::-;24028:30;;23970:25;:41;23996:14;23970:41;;;;;;;;;;;:55;24012:9;24022:1;24012:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23970:55:107;-1:-1:-1;;;;;23970:55:107;;;;;;;;;;;;;:88;;;;:::i;:::-;:138;;;;:::i;:::-;24126:15;;24159:12;;23953:155;;-1:-1:-1;;;;;;24126:15:107;;:32;;24159:9;;24169:1;;24159:12;;;;;;:::i;:::-;;;;;;;;;;;24181:16;;24126:72;;-1:-1:-1;;;;;;24126:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;24126:72:107;;;15359:51:140;15426:18;;;15419:34;;;24181:16:107;;15469:18:140;;;15462:60;15332:18;;24126:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23935:689;23870:754;23096:3;;23054:1580;;;-1:-1:-1;24644:15:107;;;:31;;;-1:-1:-1;;;24644:31:107;;;;-1:-1:-1;;;;;24644:15:107;;;;:29;;:31;;;;;;;;;;:15;;:31;;;;;;;;;;19647:2891;19776:29;19808:19;:17;:19::i;:::-;20102:27;;20072:58;;;;:29;:58;;;;;;19776:51;;-1:-1:-1;20072:83:107;;20068:155;;20178:34;;-1:-1:-1;;;20178:34:107;;;;;;;;;;;20068:155;20372:27;;:31;;20402:1;;20372:31;:::i;:::-;20335:33;;:68;20331:140;;20426:34;;-1:-1:-1;;;20426:34:107;;;;;;;;;;;20331:140;20571:26;20600:37;:35;:37::i;:::-;20571:66;;20652:9;20647:269;20671:9;:16;20667:1;:20;20647:269;;;20781:20;:31;;;20712:11;:40;20724:20;:27;;;20712:40;;;;;;;;;;;:54;20753:9;20763:1;20753:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20712:54:107;-1:-1:-1;;;;;20712:54:107;;;;;;;;;;;;:65;;;:100;20708:198;;20832:20;:43;20853:21;20832:43;;;;;;;;;;;:57;20876:9;20886:1;20876:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20832:57:107;-1:-1:-1;;;;;20832:57:107;;;;;;;;;;;;;:59;;;;;;;;;:::i;:::-;;;;;;20708:198;20689:3;;20647:269;;;;20972:60;21011:20;20972:38;:60::i;:::-;20967:900;;21157:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21157:58:107;;;;;;;;;:63;;21219:1;;21157:48;:63;;21219:1;;21157:63;:::i;:::-;;;;-1:-1:-1;20967:900:107;;-1:-1:-1;20967:900:107;;21751:8;-1:-1:-1;;;;;21729:30:107;:18;:16;:18::i;:::-;-1:-1:-1;;;;;21729:30:107;;21725:132;;21779:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21779:58:107;;;;;;;;;:63;;21841:1;;21779:48;:63;;21841:1;;21779:63;:::i;:::-;;;;-1:-1:-1;;21725:132:107;21911:31;;21877:66;;;;:33;:66;;;;;;;;21944:27;;21877:95;;;;;;;:118;;;;;;;;;;;;;;;;;;;;;;;;;;;22005:33;:63;;;22078:44;;;:15;:44;;;;;:55;;-1:-1:-1;;;;;;22078:55:107;-1:-1:-1;;;;;22078:55:107;;;;;22172:27;;22143:57;;:28;:57;;;;;22203:12;22143:72;;22257:27;;22225:60;;:31;:60;;;;;;22288:15;22225:78;;22407:28;22449:31;;22494:27;;22370:161;;19716:25:140;;;19757:18;;;19750:34;;;;22370:161:107;;19689:18:140;22370:161:107;;;;;;;19766:2772;;19647:2891;;:::o;1671:281:40:-;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;6818:32:140;;1805:47:40;;;6800:51:140;6773:18;;1805:47:40;6654:203:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;6818:32:140;;4933:24:53;;;6800:51:140;6773:18;;4933:24:53;6654:203:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:466;574:6;582;590;643:2;631:9;622:7;618:23;614:32;611:52;;;659:1;656;649:12;611:52;-1:-1:-1;;704:23:140;;;824:2;809:18;;796:32;;-1:-1:-1;927:2:140;912:18;;;899:32;;497:466;-1:-1:-1;497:466:140:o;1543:226::-;1602:6;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;-1:-1:-1;1716:23:140;;1543:226;-1:-1:-1;1543:226:140:o;1774:127::-;1835:10;1830:3;1826:20;1823:1;1816:31;1866:4;1863:1;1856:15;1890:4;1887:1;1880:15;1906:275;1977:2;1971:9;2042:2;2023:13;;-1:-1:-1;;2019:27:140;2007:40;;-1:-1:-1;;;;;2062:34:140;;2098:22;;;2059:62;2056:88;;;2124:18;;:::i;:::-;2160:2;2153:22;1906:275;;-1:-1:-1;1906:275:140:o;2186:727::-;2253:5;2301:4;2289:9;2284:3;2280:19;2276:30;2273:50;;;2319:1;2316;2309:12;2273:50;2372:2;2366:9;2414:4;2402:17;;-1:-1:-1;;;;;2434:34:140;;2470:22;;;2431:62;2428:88;;;2496:18;;:::i;:::-;2532:2;2525:22;;;2616:23;;2648;;2744:2;2729:18;;;2716:32;2764:15;;;2757:32;2847:18;;;2834:32;2882:15;;;2875:32;;;;-1:-1:-1;2565:6:140;2186:727;-1:-1:-1;2186:727:140:o;2918:254::-;3016:6;3069:2;3057:9;3048:7;3044:23;3040:32;3037:52;;;3085:1;3082;3075:12;3037:52;3108:58;3158:7;3147:9;3108:58;:::i;3177:149::-;-1:-1:-1;;;;;3270:31:140;;3260:42;;3250:70;;3316:1;3313;3306:12;3331:183;3391:4;-1:-1:-1;;;;;3416:6:140;3413:30;3410:56;;;3446:18;;:::i;:::-;-1:-1:-1;3491:1:140;3487:14;3503:4;3483:25;;3331:183::o;3519:762::-;3573:5;3626:3;3619:4;3611:6;3607:17;3603:27;3593:55;;3644:1;3641;3634:12;3593:55;3684:6;3671:20;3711:64;3727:47;3767:6;3727:47;:::i;:::-;3711:64;:::i;:::-;3799:3;3823:6;3818:3;3811:19;3855:4;3850:3;3846:14;3839:21;;3916:4;3906:6;3903:1;3899:14;3891:6;3887:27;3883:38;3869:52;;3944:3;3936:6;3933:15;3930:35;;;3961:1;3958;3951:12;3930:35;3997:4;3989:6;3985:17;4011:239;4027:6;4022:3;4019:15;4011:239;;;4109:3;4096:17;4126:49;4169:5;4126:49;:::i;:::-;4188:18;;4235:4;4226:14;;;;4044;4011:239;;;-1:-1:-1;4268:7:140;3519:762;-1:-1:-1;;;;;3519:762:140:o;4286:1170::-;4450:6;4458;4466;4474;4482;4490;4498;4551:3;4539:9;4530:7;4526:23;4522:33;4519:53;;;4568:1;4565;4558:12;4519:53;4607:9;4594:23;4626:49;4669:5;4626:49;:::i;:::-;4694:5;-1:-1:-1;4772:2:140;4757:18;;4744:32;;-1:-1:-1;4875:2:140;4860:18;;4847:32;;-1:-1:-1;4978:2:140;4963:18;;4950:32;;-1:-1:-1;5059:3:140;5044:19;;5031:33;-1:-1:-1;;;;;5076:30:140;;5073:50;;;5119:1;5116;5109:12;5073:50;5142:61;5195:7;5186:6;5175:9;5171:22;5142:61;:::i;:::-;5132:71;-1:-1:-1;;5276:3:140;5261:19;;5248:33;;-1:-1:-1;5359:3:140;5344:19;;5331:33;5373:51;5331:33;5373:51;:::i;:::-;5443:7;5433:17;;;4286:1170;;;;;;;;;;:::o;5461:385::-;5529:6;5537;5590:2;5578:9;5569:7;5565:23;5561:32;5558:52;;;5606:1;5603;5596:12;5558:52;5651:23;;;-1:-1:-1;5750:2:140;5735:18;;5722:32;5763:51;5722:32;5763:51;:::i;:::-;5833:7;5823:17;;;5461:385;;;;;:::o;6862:346::-;6930:6;6938;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;-1:-1:-1;;7052:23:140;;;7172:2;7157:18;;;7144:32;;-1:-1:-1;6862:346:140:o;7537:265::-;7596:6;7649:2;7637:9;7628:7;7624:23;7620:32;7617:52;;;7665:1;7662;7655:12;7617:52;7704:9;7691:23;7723:49;7766:5;7723:49;:::i;7807:348::-;7891:6;7944:2;7932:9;7923:7;7919:23;7915:32;7912:52;;;7960:1;7957;7950:12;7912:52;8000:9;7987:23;-1:-1:-1;;;;;8025:6:140;8022:30;8019:50;;;8065:1;8062;8055:12;8019:50;8088:61;8141:7;8132:6;8121:9;8117:22;8088:61;:::i;8160:918::-;8237:6;8245;8298:2;8286:9;8277:7;8273:23;8269:32;8266:52;;;8314:1;8311;8304:12;8266:52;8353:9;8340:23;8372:49;8415:5;8372:49;:::i;:::-;8440:5;-1:-1:-1;8496:2:140;8481:18;;8468:32;-1:-1:-1;;;;;8512:30:140;;8509:50;;;8555:1;8552;8545:12;8509:50;8578:22;;8631:4;8623:13;;8619:27;-1:-1:-1;8609:55:140;;8660:1;8657;8650:12;8609:55;8700:2;8687:16;-1:-1:-1;;;;;8718:6:140;8715:30;8712:56;;;8748:18;;:::i;:::-;8790:57;8837:2;8814:17;;-1:-1:-1;;8810:31:140;8843:2;8806:40;8790:57;:::i;:::-;8870:6;8863:5;8856:21;8918:7;8913:2;8904:6;8900:2;8896:15;8892:24;8889:37;8886:57;;;8939:1;8936;8929:12;8886:57;8994:6;8989:2;8985;8981:11;8976:2;8969:5;8965:14;8952:49;9046:1;9041:2;9032:6;9025:5;9021:18;9017:27;9010:38;9067:5;9057:15;;;;;8160:918;;;;;:::o;9083:965::-;9206:6;9259:2;9247:9;9238:7;9234:23;9230:32;9227:52;;;9275:1;9272;9265:12;9227:52;9315:9;9302:23;-1:-1:-1;;;;;9340:6:140;9337:30;9334:50;;;9380:1;9377;9370:12;9334:50;9403:22;;9456:4;9448:13;;9444:27;-1:-1:-1;9434:55:140;;9485:1;9482;9475:12;9434:55;9525:2;9512:16;9548:64;9564:47;9604:6;9564:47;:::i;9548:64::-;9634:3;9658:6;9653:3;9646:19;9690:2;9685:3;9681:12;9674:19;;9748:2;9740:4;9732:6;9728:17;9724:2;9720:26;9716:35;9702:49;;9774:7;9766:6;9763:19;9760:39;;;9795:1;9792;9785:12;9760:39;9827:2;9823;9819:11;9808:22;;9839:179;9855:6;9850:3;9847:15;9839:179;;;9923:52;9967:7;9962:3;9923:52;:::i;:::-;9918:3;9911:65;10005:2;10000:3;9996:12;9989:19;;9881:4;9876:3;9872:14;9865:21;;9839:179;;;10037:5;9083:965;-1:-1:-1;;;;;;9083:965:140:o;10053:544::-;10130:6;10138;10146;10199:2;10187:9;10178:7;10174:23;10170:32;10167:52;;;10215:1;10212;10205:12;10167:52;10260:23;;;-1:-1:-1;10359:2:140;10344:18;;10331:32;10372:51;10331:32;10372:51;:::i;:::-;10442:7;-1:-1:-1;10501:2:140;10486:18;;10473:32;10514:51;10473:32;10514:51;:::i;:::-;10584:7;10574:17;;;10053:544;;;;;:::o;10602:446::-;10655:3;10693:5;10687:12;10720:6;10715:3;10708:19;10752:4;10747:3;10743:14;10736:21;;10791:4;10784:5;10780:16;10814:1;10824:199;10838:6;10835:1;10832:13;10824:199;;;10903:13;;-1:-1:-1;;;;;10899:39:140;10887:52;;10968:4;10959:14;;;;10996:17;;;;10935:1;10853:9;10824:199;;;-1:-1:-1;11039:3:140;;10602:446;-1:-1:-1;;;;10602:446:140:o;11053:261::-;11232:2;11221:9;11214:21;11195:4;11252:56;11304:2;11293:9;11289:18;11281:6;11252:56;:::i;11319:250::-;11404:1;11414:113;11428:6;11425:1;11422:13;11414:113;;;11504:11;;;11498:18;11485:11;;;11478:39;11450:2;11443:10;11414:113;;;-1:-1:-1;;11561:1:140;11543:16;;11536:27;11319:250::o;11574:396::-;11723:2;11712:9;11705:21;11686:4;11755:6;11749:13;11798:6;11793:2;11782:9;11778:18;11771:34;11814:79;11886:6;11881:2;11870:9;11866:18;11861:2;11853:6;11849:15;11814:79;:::i;:::-;11954:2;11933:15;-1:-1:-1;;11929:29:140;11914:45;;;;11961:2;11910:54;;11574:396;-1:-1:-1;;11574:396:140:o;11975:424::-;12043:6;12051;12104:2;12092:9;12083:7;12079:23;12075:32;12072:52;;;12120:1;12117;12110:12;12072:52;12159:9;12146:23;12178:49;12221:5;12178:49;:::i;:::-;12246:5;-1:-1:-1;12303:2:140;12288:18;;12275:32;12316:51;12275:32;12316:51;:::i;12755:273::-;12811:6;12864:2;12852:9;12843:7;12839:23;12835:32;12832:52;;;12880:1;12877;12870:12;12832:52;12919:9;12906:23;12972:5;12965:13;12958:21;12951:5;12948:32;12938:60;;12994:1;12991;12984:12;13684:127;13745:10;13740:3;13736:20;13733:1;13726:31;13776:4;13773:1;13766:15;13800:4;13797:1;13790:15;13816:125;13881:9;;;13902:10;;;13899:36;;;13915:18;;:::i;13946:398::-;14148:2;14130:21;;;14187:2;14167:18;;;14160:30;14226:34;14221:2;14206:18;;14199:62;-1:-1:-1;;;14292:2:140;14277:18;;14270:32;14334:3;14319:19;;13946:398::o;14349:332::-;14556:6;14545:9;14538:25;14599:2;14594;14583:9;14579:18;14572:30;14519:4;14619:56;14671:2;14660:9;14656:18;14648:6;14619:56;:::i;14686:127::-;14747:10;14742:3;14738:20;14735:1;14728:31;14778:4;14775:1;14768:15;14802:4;14799:1;14792:15;14818:120;14858:1;14884;14874:35;;14889:18;;:::i;:::-;-1:-1:-1;14923:9:140;;14818:120::o;15533:184::-;15603:6;15656:2;15644:9;15635:7;15631:23;15627:32;15624:52;;;15672:1;15669;15662:12;15624:52;-1:-1:-1;15695:16:140;;15533:184;-1:-1:-1;15533:184:140:o;15722:128::-;15789:9;;;15810:11;;;15807:37;;;15824:18;;:::i;16332:969::-;16427:6;16480:2;16468:9;16459:7;16455:23;16451:32;16448:52;;;16496:1;16493;16486:12;16448:52;16529:9;16523:16;-1:-1:-1;;;;;16554:6:140;16551:30;16548:50;;;16594:1;16591;16584:12;16548:50;16617:22;;16670:4;16662:13;;16658:27;-1:-1:-1;16648:55:140;;16699:1;16696;16689:12;16648:55;16732:2;16726:9;16755:64;16771:47;16811:6;16771:47;:::i;16755:64::-;16841:3;16865:6;16860:3;16853:19;16897:2;16892:3;16888:12;16881:19;;16952:2;16942:6;16939:1;16935:14;16931:2;16927:23;16923:32;16909:46;;16978:7;16970:6;16967:19;16964:39;;;16999:1;16996;16989:12;16964:39;17031:2;17027;17023:11;17012:22;;17043:228;17059:6;17054:3;17051:15;17043:228;;;17132:3;17126:10;17149:49;17192:5;17149:49;:::i;:::-;17211:18;;17258:2;17076:12;;;;17249;;;;17043:228;;17558:112;17590:1;17616;17606:35;;17621:18;;:::i;:::-;-1:-1:-1;17655:9:140;;17558:112::o;17675:127::-;17736:10;17731:3;17727:20;17724:1;17717:31;17767:4;17764:1;17757:15;17791:4;17788:1;17781:15;17807:168;17880:9;;;17911;;17928:15;;;17922:22;;17908:37;17898:71;;17949:18;;:::i;17980:398::-;18182:2;18164:21;;;18221:2;18201:18;;;18194:30;18260:34;18255:2;18240:18;;18233:62;-1:-1:-1;;;18326:2:140;18311:18;;18304:32;18368:3;18353:19;;17980:398::o;20263:135::-;20302:3;20323:17;;;20320:43;;20343:18;;:::i;:::-;-1:-1:-1;20390:1:140;20379:13;;20263:135::o;20403:287::-;20532:3;20570:6;20564:13;20586:66;20645:6;20640:3;20633:4;20625:6;20621:17;20586:66;:::i;:::-;20668:16;;;;;20403:287;-1:-1:-1;;20403:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":9958,"length":32},{"start":9999,"length":32},{"start":10323,"length":32}]}},"methodIdentifiers":{"COMMITMENT_ADMIN()":"80e460f0","DEFAULT_ADMIN_ROLE()":"a217fddf","TRUSTED_ATTESTER()":"5db916ab","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptGenesisCeremony()":"92a2ebf3","attesterRewardPoints(uint256,address)":"6f865294","batchGrantCommitmentAdmin(address[])":"4b47d955","batchGrantTrustedAttester(address[])":"cf6772ad","commitmentFirstSeenAt(uint256,bytes32)":"d7830688","commitmentStake(uint256,bytes32)":"c19b406c","commitments(uint256,address)":"e90d4c06","createSuperBlockCommitment(uint256,bytes32,bytes32)":"026583d7","forceLatestCommitment((uint256,bytes32,bytes32))":"08c7050f","getAcceptingEpoch()":"6c713af8","getAttesterRewardPoints(uint256,address)":"6978ab12","getAttesterStake(uint256,address)":"ba26513e","getAttesterStakeForAcceptingEpoch(address)":"491d0467","getCommitmentByAttester(uint256,address)":"f1949add","getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":"e07472ef","getCustodianStake(uint256,address)":"1de38fe1","getCustodianStakeForAcceptingEpoch(address)":"d440116d","getEpochDuration()":"5d3ea8f1","getEpochStartTime()":"90879f64","getLastPostconfirmedSuperBlockHeight()":"59b99597","getMaxTolerableSuperBlockHeight()":"943b79e2","getMinCommitmentAgeForPostconfirmation()":"ab208ebd","getNextAcceptingEpochWithException()":"3752d675","getPostconfirmedCommitment(uint256)":"2bfd11d6","getPostconfirmer()":"35ea1c63","getPostconfirmerDuration()":"1241ebe3","getPostconfirmerPrivilegeDuration()":"028e490a","getPostconfirmerRewardPoints(uint256,address)":"ed8a1d59","getPostconfirmerStartTime()":"5f4d642e","getPresentEpoch()":"37d7f58f","getRoleAdmin(bytes32)":"248a9ca3","getStake(uint256,address,address)":"7aa81c2a","getStakeForAcceptingEpoch(address,address)":"bb04bd2f","getStakedAttestersForAcceptingEpoch()":"aa0d6fcd","getSuperBlockHeightAssignedEpoch(uint256)":"d283392e","getTotalStake(uint256)":"45367f23","getTotalStakeForAcceptingEpoch()":"14e38026","getValidatorCommitmentAtSuperBlockHeight(uint256,address)":"556d97c8","grantCommitmentAdmin(address)":"949d7c2a","grantRole(bytes32,address)":"2f2ff15d","grantTrustedAttester(address)":"81df1746","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address,uint256,uint256,uint256,address[],uint256,address)":"107e21ca","isCommitted(uint256)":"e4a3fb74","isPostconfirmed(uint256)":"ec23ec2e","isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":"0cf6b6bd","lastPostconfirmedSuperBlockHeight()":"fdafe9ca","leadingSuperBlockTolerance()":"03d3f7fd","minCommitmentAgeForPostconfirmation()":"bff92c8c","moveTokenAddress()":"58376877","openAttestationEnabled()":"ef9ae15c","postconfirmSuperBlocksAndRollover()":"26624e37","postconfirmedAtL1BlockHeight(uint256)":"7ac561c8","postconfirmedAtL1BlockHeightByPostconfirmer(uint256)":"7cfd8205","postconfirmedAtL1BlockTimestamp(uint256)":"a207fe2f","postconfirmedBy(uint256)":"91807e4f","postconfirmedByPostconfirmer(uint256)":"08750a32","postconfirmedSuperBlocks(uint256)":"eda67fc4","postconfirmedSuperBlocksVersion()":"ec18c186","postconfirmerDuration()":"4ceb2e66","postconfirmerPrivilegeDuration()":"55b8119d","postconfirmerRewardPoints(uint256,address)":"1db859c7","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardPerAttestationPoint()":"5f83c7d5","rewardPerPostconfirmationPoint()":"d3eef4cc","setAcceptingEpoch(uint256)":"d03509ec","setMinCommitmentAgeForPostconfirmation(uint256)":"1f83e2a3","setOpenAttestationEnabled(bool)":"d2526fef","setPostconfirmedCommitmentAtBlockHeight((uint256,bytes32,bytes32))":"3119edd4","setPostconfirmerDuration(uint256)":"3d645927","setPostconfirmerPrivilegeDuration(uint256)":"da7d28b6","setRewardPerAttestationPoint(uint256)":"0d39f7f0","setRewardPerPostconfirmationPoint(uint256)":"57342282","stakingContract()":"ee99205c","submitBatchSuperBlockCommitment((uint256,bytes32,bytes32)[])":"622e3616","submitSuperBlockCommitment((uint256,bytes32,bytes32))":"0e74b609","superBlockHeightAssignedEpoch(uint256)":"85e6b8c2","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286","versionedPostconfirmedSuperBlocks(uint256,uint256)":"3ba18005"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AttesterAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLongForEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnacceptableSuperBlockCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDurationTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"attesterStake\",\"type\":\"uint256\"}],\"name\":\"SuperBlockCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"SuperBlockPostconfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMITMENT_ADMIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_ATTESTER\",\"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\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"attesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchGrantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"}],\"name\":\"batchGrantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitement\",\"type\":\"bytes32\"}],\"name\":\"commitmentStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"name\":\"createSuperBlockCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"forceLatestCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCommitmentByAttester\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"getCommitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxTolerableSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getPostconfirmedCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"getPostconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPresentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getSuperBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getTotalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getValidatorCommitmentAtSuperBlockHeight\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"grantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"_stakingContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lastPostconfirmedSuperBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leadingSuperBlockTolerance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_custodians\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_moveTokenAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isCommitted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isPostconfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"isWithinPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leadingSuperBlockTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moveTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmSuperBlocksAndRollover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeightByPostconfirmer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedBy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedByPostconfirmer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmedSuperBlocksVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"postconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerAttestationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerPostconfirmationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minCommitmentAgeForPostconfirmation\",\"type\":\"uint256\"}],\"name\":\"setMinCommitmentAgeForPostconfirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOpenAttestationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"setPostconfirmedCommitmentAtBlockHeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerPrivilegeDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerPrivilegeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerAttestationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerPostconfirmationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingContract\",\"outputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment[]\",\"name\":\"superBlockCommitments\",\"type\":\"tuple[]\"}],\"name\":\"submitBatchSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"submitSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"superBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"versionedPostconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getPostconfirmerPrivilegeDuration()\":{\"returns\":{\"_0\":\"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"details\":\"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAcceptingEpoch(uint256)\":{\"params\":{\"newEpoch\":\"The new accepting epoch value\"}},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"params\":{\"_minCommitmentAgeForPostconfirmation\":\"New minimum commitment age \"}},\"setPostconfirmerDuration(uint256)\":{\"params\":{\"_postconfirmerDuration\":\"New postconfirmer term duration in time units\"}},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"params\":{\"_postconfirmerPrivilegeDuration\":\"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"PostconfirmerDurationTooLong()\":[{\"notice\":\"Error thrown when postconfirmer term is greater than 256 blocks\"}],\"PostconfirmerDurationTooLongForEpoch()\":[{\"notice\":\"Error thrown when postconfirmer term is too large for epoch duration\"}],\"minCommitmentAgeForPostconfirmationTooLong()\":[{\"notice\":\"Error thrown when minimum commitment age is greater than epoch duration\"}],\"postconfirmerPrivilegeDurationTooLong()\":[{\"notice\":\"Error thrown when maximum postconfirmer non-reactivity time is greater than epoch duration\"}]},\"kind\":\"user\",\"methods\":{\"COMMITMENT_ADMIN()\":{\"notice\":\"The role that allows the commitment admin to set the accepting epoch\"},\"TRUSTED_ATTESTER()\":{\"notice\":\"The role that allows attesters to submit commitments\"},\"acceptGenesisCeremony()\":{\"notice\":\"Accepts the genesis ceremony.\"},\"getAcceptingEpoch()\":{\"notice\":\"get the accepting epoch\"},\"getAttesterRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for an attester in a given epoch\"},\"getAttesterStake(uint256,address)\":{\"notice\":\"Gets the stake for a given attester at a given epoch\"},\"getAttesterStakeForAcceptingEpoch(address)\":{\"notice\":\"Gets the stake for a given attester at the accepting epoch\"},\"getCommitmentByAttester(uint256,address)\":{\"notice\":\"Gets the commitment submitted by an attester for a given height\"},\"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))\":{\"notice\":\"get the timestamp when a commitment was first seen\"},\"getCustodianStake(uint256,address)\":{\"notice\":\"Gets the stake for a given custodian for a given epoch\"},\"getEpochDuration()\":{\"notice\":\"Gets the epoch duration\"},\"getEpochStartTime()\":{\"notice\":\"Gets the time at which the current epoch started\"},\"getLastPostconfirmedSuperBlockHeight()\":{\"notice\":\"Gets the height of the last postconfirmed superblock\"},\"getPostconfirmedCommitment(uint256)\":{\"notice\":\"get the postconfirmed commitment for a given height\"},\"getPostconfirmer()\":{\"notice\":\"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness\"},\"getPostconfirmerDuration()\":{\"notice\":\"Gets the postconfirmer duration\"},\"getPostconfirmerPrivilegeDuration()\":{\"notice\":\"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"getPostconfirmerRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for a postconfirmer in a given epoch\"},\"getPostconfirmerStartTime()\":{\"notice\":\"Gets the time at which the current postconfirmer's term started\"},\"getPresentEpoch()\":{\"notice\":\"get the present epoch\"},\"getStake(uint256,address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at a given epoch\"},\"getStakeForAcceptingEpoch(address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at the accepting epoch\"},\"getStakedAttestersForAcceptingEpoch()\":{\"notice\":\"Gets the attesters who have stake in the current accepting epoch\"},\"getSuperBlockHeightAssignedEpoch(uint256)\":{\"notice\":\"Gets the epoch assigned to a superblock height\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"notice\":\"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window\"},\"minCommitmentAgeForPostconfirmation()\":{\"notice\":\"Minimum time that must pass before a commitment can be postconfirmed\"},\"postconfirmSuperBlocksAndRollover()\":{\"notice\":\"postconfirm superblocks and rollover\"},\"postconfirmerDuration()\":{\"notice\":\"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period.\"},\"postconfirmerPrivilegeDuration()\":{\"notice\":\"Max time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"setAcceptingEpoch(uint256)\":{\"notice\":\"Sets the accepting epoch to a new value (must be higher than current)\"},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"notice\":\"Sets the minimum time that must pass before a commitment can be postconfirmed\"},\"setPostconfirmerDuration(uint256)\":{\"notice\":\"Sets the postconfirmer term duration, must be less than epoch duration\"},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"notice\":\"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/settlement/PCP.sol\":\"PCP\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/settlement/PCP.sol\":{\"keccak256\":\"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b\",\"dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp\"]},\"src/settlement/PCPStorage.sol\":{\"keccak256\":\"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff\",\"dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss\"]},\"src/settlement/interfaces/IPCP.sol\":{\"keccak256\":\"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f\",\"dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg\"]},\"src/settlement/settlement/BaseSettlement.sol\":{\"keccak256\":\"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e\",\"dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AttesterAlreadyCommitted"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLong"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLongForEpoch"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnacceptableSuperBlockCommitment"},{"inputs":[],"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong"},{"inputs":[],"type":"error","name":"postconfirmerPrivilegeDurationTooLong"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"attesterStake","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockCommitmentSubmitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"height","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockPostconfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMITMENT_ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TRUSTED_ATTESTER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"attesterRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantCommitmentAdmin"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantTrustedAttester"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitement","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentStake","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"commitments","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"createSuperBlockCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"forceLatestCommitment"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCommitmentByAttester","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"getCommitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxTolerableSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPostconfirmedCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"getPostconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPresentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSuperBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTotalStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCommitmentAdmin"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantTrustedAttester"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IMovementStaking","name":"_stakingContract","type":"address"},{"internalType":"uint256","name":"_lastPostconfirmedSuperBlockHeight","type":"uint256"},{"internalType":"uint256","name":"_leadingSuperBlockTolerance","type":"uint256"},{"internalType":"uint256","name":"_epochDuration","type":"uint256"},{"internalType":"address[]","name":"_custodians","type":"address[]"},{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"},{"internalType":"address","name":"_moveTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isCommitted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isPostconfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"isWithinPostconfirmerPrivilegeDuration","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leadingSuperBlockTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"moveTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"openAttestationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"postconfirmSuperBlocksAndRollover"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeight","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockTimestamp","outputs":[{"internalType":"uint256","name":"L1BlockTimestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedBy","outputs":[{"internalType":"address","name":"attester","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedByPostconfirmer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocksVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"postconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerAttestationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerPostconfirmationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"uint256","name":"_minCommitmentAgeForPostconfirmation","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMinCommitmentAgeForPostconfirmation"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOpenAttestationEnabled"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmedCommitmentAtBlockHeight"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerDuration"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerPrivilegeDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerPrivilegeDuration"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerAttestationPoint"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerPostconfirmationPoint"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingContract","outputs":[{"internalType":"contract IMovementStaking","name":"","type":"address"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment[]","name":"superBlockCommitments","type":"tuple[]","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitBatchSuperBlockCommitment"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitSuperBlockCommitment"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"superBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"versionedPostconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getPostconfirmerPrivilegeDuration()":{"returns":{"_0":"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"details":"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setAcceptingEpoch(uint256)":{"params":{"newEpoch":"The new accepting epoch value"}},"setMinCommitmentAgeForPostconfirmation(uint256)":{"params":{"_minCommitmentAgeForPostconfirmation":"New minimum commitment age "}},"setPostconfirmerDuration(uint256)":{"params":{"_postconfirmerDuration":"New postconfirmer term duration in time units"}},"setPostconfirmerPrivilegeDuration(uint256)":{"params":{"_postconfirmerPrivilegeDuration":"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"COMMITMENT_ADMIN()":{"notice":"The role that allows the commitment admin to set the accepting epoch"},"TRUSTED_ATTESTER()":{"notice":"The role that allows attesters to submit commitments"},"acceptGenesisCeremony()":{"notice":"Accepts the genesis ceremony."},"getAcceptingEpoch()":{"notice":"get the accepting epoch"},"getAttesterRewardPoints(uint256,address)":{"notice":"Gets the reward points for an attester in a given epoch"},"getAttesterStake(uint256,address)":{"notice":"Gets the stake for a given attester at a given epoch"},"getAttesterStakeForAcceptingEpoch(address)":{"notice":"Gets the stake for a given attester at the accepting epoch"},"getCommitmentByAttester(uint256,address)":{"notice":"Gets the commitment submitted by an attester for a given height"},"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":{"notice":"get the timestamp when a commitment was first seen"},"getCustodianStake(uint256,address)":{"notice":"Gets the stake for a given custodian for a given epoch"},"getEpochDuration()":{"notice":"Gets the epoch duration"},"getEpochStartTime()":{"notice":"Gets the time at which the current epoch started"},"getLastPostconfirmedSuperBlockHeight()":{"notice":"Gets the height of the last postconfirmed superblock"},"getPostconfirmedCommitment(uint256)":{"notice":"get the postconfirmed commitment for a given height"},"getPostconfirmer()":{"notice":"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness"},"getPostconfirmerDuration()":{"notice":"Gets the postconfirmer duration"},"getPostconfirmerPrivilegeDuration()":{"notice":"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"},"getPostconfirmerRewardPoints(uint256,address)":{"notice":"Gets the reward points for a postconfirmer in a given epoch"},"getPostconfirmerStartTime()":{"notice":"Gets the time at which the current postconfirmer's term started"},"getPresentEpoch()":{"notice":"get the present epoch"},"getStake(uint256,address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at a given epoch"},"getStakeForAcceptingEpoch(address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at the accepting epoch"},"getStakedAttestersForAcceptingEpoch()":{"notice":"Gets the attesters who have stake in the current accepting epoch"},"getSuperBlockHeightAssignedEpoch(uint256)":{"notice":"Gets the epoch assigned to a superblock height"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"notice":"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window"},"minCommitmentAgeForPostconfirmation()":{"notice":"Minimum time that must pass before a commitment can be postconfirmed"},"postconfirmSuperBlocksAndRollover()":{"notice":"postconfirm superblocks and rollover"},"postconfirmerDuration()":{"notice":"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period."},"postconfirmerPrivilegeDuration()":{"notice":"Max time the postconfirmer can be non-reactive to an honest superBlock commitment"},"setAcceptingEpoch(uint256)":{"notice":"Sets the accepting epoch to a new value (must be higher than current)"},"setMinCommitmentAgeForPostconfirmation(uint256)":{"notice":"Sets the minimum time that must pass before a commitment can be postconfirmed"},"setPostconfirmerDuration(uint256)":{"notice":"Sets the postconfirmer term duration, must be less than epoch duration"},"setPostconfirmerPrivilegeDuration(uint256)":{"notice":"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/settlement/PCP.sol":"PCP"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/settlement/PCP.sol":{"keccak256":"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714","urls":["bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b","dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp"],"license":"UNLICENSED"},"src/settlement/PCPStorage.sol":{"keccak256":"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1","urls":["bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff","dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss"],"license":"UNLICENSED"},"src/settlement/interfaces/IPCP.sol":{"keccak256":"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89","urls":["bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f","dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg"],"license":"UNLICENSED"},"src/settlement/settlement/BaseSettlement.sol":{"keccak256":"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a","urls":["bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e","dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":107} +>>>>>>> main diff --git a/protocol/pcp/cli/client/src/bin/e2e/test_client_settlement.rs b/protocol/pcp/cli/client/src/bin/e2e/test_client_settlement.rs new file mode 100644 index 00000000..1f89818d --- /dev/null +++ b/protocol/pcp/cli/client/src/bin/e2e/test_client_settlement.rs @@ -0,0 +1,340 @@ +use alloy::providers::ProviderBuilder; +use alloy::signers::local::PrivateKeySigner; +use alloy_network::EthereumWallet; +use alloy_primitives::Address; +use alloy_primitives::U256; +use anyhow::Context; +use ffs_environment::{backend::config_file::ConfigFile, ffs_environment}; +use postconfirmations_settlement_client::eth_client::Client; +use postconfirmations_settlement_client::eth_client::{MOVEToken, MovementStaking, PCP}; +use postconfirmations_settlement_client::PcpSettlementClientOperations; +use pcp_config::Config; +use pcp_types::block_commitment::{BlockCommitment, Commitment, Id}; +use std::str::FromStr; +use tokio_stream::StreamExt; +use tracing::info; + +async fn run_genesis_ceremony( + config: &Config, + governor: PrivateKeySigner, + rpc_url: &str, + move_token_address: Address, + staking_address: Address, + postconfirmations_address: Address, +) -> Result<(), anyhow::Error> { + // Build alice client for MOVEToken, PCP, and staking + info!("Creating alice client"); + let alice: PrivateKeySigner = config + .testing + .as_ref() + .context("Testing config not defined.")? + .well_known_account_private_keys + .get(1) + .context("No well known account")? + .parse()?; + let alice_address = alice.address(); + let alice_rpc_provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(EthereumWallet::from(alice.clone())) + .on_builtin(&rpc_url) + .await?; + let alice_staking = MovementStaking::new(staking_address, &alice_rpc_provider); + let alice_move_token = MOVEToken::new(move_token_address, &alice_rpc_provider); + + // Build bob client for MOVEToken, PCP, and staking + info!("Creating bob client"); + let bob: PrivateKeySigner = config + .testing + .as_ref() + .context("Testing config not defined.")? + .well_known_account_private_keys + .get(2) + .context("No well known account")? + .parse()?; + let bob_address = bob.address(); + let bob_rpc_provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(EthereumWallet::from(bob.clone())) + .on_builtin(&rpc_url) + .await?; + let bob_staking = MovementStaking::new(staking_address, &bob_rpc_provider); + let bob_move_token = MOVEToken::new(move_token_address, &bob_rpc_provider); + + // Build the PCP client for staking + info!("Creating governor client"); + let governor_rpc_provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(EthereumWallet::from(governor.clone())) + .on_builtin(&rpc_url) + .await?; + let governor_token = MOVEToken::new(move_token_address, &governor_rpc_provider); + let governor_pcp = PCP::new(postconfirmations_address, &governor_rpc_provider); + let governor_staking = MovementStaking::new(staking_address, &governor_rpc_provider); + + // Allow Alice and Bod to stake by adding to white list. + governor_staking + .whitelistAddress(alice_address) + .send() + .await? + .watch() + .await + .context("Governor failed to whilelist alice")?; + governor_staking + .whitelistAddress(bob_address) + .send() + .await? + .watch() + .await + .context("Governor failed to whilelist Bod")?; + + // alice stakes for pcp + info!("Alice stakes for PCP"); + let token_name = governor_token.name().call().await.context("Failed to get token name")?; + info!("Token name: {}", token_name._0); + + // debug: this is showing up correctly + let has_minter_role = governor_token + .hasMinterRole(governor.address()) + .call() + .await + .context("Failed to check if governor has minter role")?; + info!("Has minter role: {}", has_minter_role._0); + + let has_minter_role_from_alice = alice_move_token + .hasMinterRole(governor.address()) + .call() + .await + .context("Failed to check if governor has minter role")?; + info!("Has minter role from Alice: {}", has_minter_role_from_alice._0); + + //info!("config chain_id: {}",config.eth_chain_id.clone().to_string()); + //info!("governor chain_id: {}", governor_rpc_provider.get_chain_id().await.context("Failed to get chain id")?.to_string()); + + // debug: this is showing up correctly + let alice_hash_minter_role = governor_token + .hasMinterRole(alice.address()) + .call() + .await + .context("Failed to check if alice has minter role")?; + info!("Alice has minter role: {}", alice_hash_minter_role._0); + + let governor_address = governor.address(); + info!("Governor address: {}", governor_address.clone().to_string()); + // debug: fails here + governor_token + .mint(alice_address, U256::from(100)) + .send() + .await? + .watch() + .await + .context("Governor failed to mint for alice")?; + + info!("staking_address: {}", staking_address.clone().to_string()); + + // debug: also fails here if you lift the restriction above; then it fails as if msg.sender = address(0) + alice_move_token + .approve(staking_address, U256::from(100)) + .send() + .await? + .watch() + .await + .context("Alice failed to approve PCP")?; + info!("Alice move approve"); + let callbuilder = alice_staking.stake(postconfirmations_address, move_token_address, U256::from(100)); + let rc = callbuilder.send().await; + match rc { + Ok(rc) => { + rc.watch().await.context("Alice failed to stake for PCP")?; + } + Err(err) => { + println!("err: {err:?}"); + panic!("{err:?}",); + } + }; + info!("Alice move staking"); + + // bob stakes for pcp + info!("Bob stakes for PCP"); + governor_token + .mint(bob.address(), U256::from(100)) + .send() + .await? + .watch() + .await + .context("Governor failed to mint for bob")?; + info!("governor mint"); + + let bob_balance = bob_move_token + .balanceOf(bob.address()) + .call() + .await + .context("Failed to get bob balance")?; + info!("Bob balance: {}", bob_balance._0); + bob_move_token + .approve(staking_address, U256::from(100)) + .send() + .await? + .watch() + .await + .context("Bob failed to approve PCP")?; + info!("Bob move approve"); + bob_staking + .stake(postconfirmations_address, move_token_address, U256::from(100)) + .send() + .await? + .watch() + .await + .context("Bob failed to stake for PCP")?; + info!("Bob move staking"); + + // let domain_time = governor_staking + // .epochDurationByDomain(postconfirmations_address.clone()) + // .call() + // .await.context("Failed to get domain registration time")?; + // info!("Domain registration time in PCP {:?}", domain_time); + // pcp accepts the genesis + info!("PCP accepts the genesis"); + governor_pcp + .acceptGenesisCeremony() + .send() + .await? + .watch() + .await + .context("Governor failed to accept genesis ceremony")?; + info!("pcp accepted"); + + Ok(()) +} + +#[tokio::main] +pub async fn main() -> Result<(), anyhow::Error> { + use tracing_subscriber::EnvFilter; + + tracing_subscriber::fmt() + .with_env_filter( + EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info")), + ) + .init(); + + let dot_movement = dot_movement::DotMovement::try_from_env()?; + let config_file = dot_movement.try_get_or_create_config_file().await?; + + // get a matching ffs_environment object + let ffs_environment: ffs_environment = + ffs_environment::new(ConfigFile::new(config_file), vec!["postconfirmations_settlement".to_string()]); + let config: Config = ffs_environment.try_wait_for_ready().await?; + let rpc_url = config.eth_rpc_connection_url(); + + let testing_config = config.testing.as_ref().context("Testing config not defined.")?; + run_genesis_ceremony( + &config, + PrivateKeySigner::from_str(&testing_config.postconfirmations_testing_admin_account_private_key)?, + &rpc_url, + Address::from_str(&testing_config.move_token_contract_address)?, + Address::from_str(&testing_config.movement_staking_contract_address)?, + Address::from_str(&config.settle.postconfirmations_contract_address)?, + ) + .await?; + + // Build client 1 and send the first commitment. + //let settlement_config = + let config1 = Config { + settle: pcp_config::common::settlement::Config { + signer_private_key: testing_config + .well_known_account_private_keys + .get(1) + .context("No well known account")? + .to_string(), + ..config.settle.clone() + }, + ..config.clone() + }; + let client1 = Client::build_with_config(&config1).await.unwrap(); + + let mut client1_stream = client1.stream_block_commitments().await.unwrap(); + // Client post a new commitment + let commitment = BlockCommitment::new(1, Id::new([2; 32]), Commitment::new([3; 32])); + + let res = client1.post_block_commitment(commitment.clone()).await; + assert!(res.is_ok()); + + // No notification, quorum is not reached + let res = + tokio::time::timeout(tokio::time::Duration::from_secs(5), client1_stream.next()).await; + assert!(res.is_err()); + + // Build client 2 and send the second commitment. + let config2 = Config { + settle: pcp_config::common::settlement::Config { + signer_private_key: testing_config + .well_known_account_private_keys + .get(2) + .context("No well known account")? + .to_string(), + ..config.settle.clone() + }, + ..config.clone() + }; + let client2 = Client::build_with_config(&config2).await.unwrap(); + + let mut client2_stream = client2.stream_block_commitments().await.unwrap(); + + // Client post a new commitment + let res = client2.post_block_commitment(commitment).await; + assert!(res.is_ok()); + + // Now we move to block 2 and make some commitment just to trigger the epochRollover + let commitment2 = BlockCommitment::new(2, Id::new([4; 32]), Commitment::new([5; 32])); + + let res = client2.post_block_commitment(commitment2.clone()).await; + assert!(res.is_ok()); + + // Validate that the accepted commitment stream gets the event. + let event = tokio::time::timeout(tokio::time::Duration::from_secs(7), client1_stream.next()) + .await + .unwrap() + .unwrap() + .unwrap(); + assert_eq!(event.commitment().as_bytes()[0], 3); + assert_eq!(event.block_id().as_bytes()[0], 2); + + let event = tokio::time::timeout(tokio::time::Duration::from_secs(7), client2_stream.next()) + .await + .unwrap() + .unwrap() + .unwrap(); + assert_eq!(event.commitment().as_bytes()[0], 3); + assert_eq!(event.block_id().as_bytes()[0], 2); + + // Test post batch commitment + // Post the complementary batch on height 2 and one on height 3 + let commitment3 = BlockCommitment::new(3, Id::new([6; 32]), Commitment::new([7; 32])); + let res = client1.post_block_commitment_batch(vec![commitment2, commitment3]).await; + assert!(res.is_ok()); + // Validate that the commitments stream gets the event. + let event = tokio::time::timeout(tokio::time::Duration::from_secs(5), client1_stream.next()) + .await + .unwrap() + .unwrap() + .unwrap(); + assert_eq!(event.commitment().as_bytes()[0], 5); + assert_eq!(event.block_id().as_bytes()[0], 4); + let event = tokio::time::timeout(tokio::time::Duration::from_secs(7), client2_stream.next()) + .await + .unwrap() + .unwrap() + .unwrap(); + assert_eq!(event.commitment().as_bytes()[0], 5); + assert_eq!(event.block_id().as_bytes()[0], 4); + + // Test get_commitment_at_height + let commitment = client1.get_commitment_at_height(1).await?; + assert!(commitment.is_some()); + let commitment = commitment.unwrap(); + assert_eq!(commitment.commitment().as_bytes()[0], 3); + assert_eq!(commitment.block_id().as_bytes()[0], 2); + let commitment = client1.get_commitment_at_height(10).await?; + assert_eq!(commitment, None); + + Ok(()) +} diff --git a/protocol/pcp/cli/client/src/eth_client.rs b/protocol/pcp/cli/client/src/eth_client.rs new file mode 100644 index 00000000..6a356252 --- /dev/null +++ b/protocol/pcp/cli/client/src/eth_client.rs @@ -0,0 +1,404 @@ +use crate::send_eth_transaction::InsufficentFunds; +use crate::send_eth_transaction::SendTransactionErrorRule; +use crate::send_eth_transaction::UnderPriced; +use crate::send_eth_transaction::VerifyRule; +use crate::{CommitmentStream, PcpSettlementClientOperations}; +use alloy::providers::fillers::ChainIdFiller; +use alloy::providers::fillers::FillProvider; +use alloy::providers::fillers::GasFiller; +use alloy::providers::fillers::JoinFill; +use alloy::providers::fillers::NonceFiller; +use alloy::providers::fillers::WalletFiller; +use alloy::providers::{Provider, ProviderBuilder, RootProvider}; +use alloy::pubsub::PubSubFrontend; +use alloy::signers::Signer; +use alloy_network::Ethereum; +use alloy_network::EthereumWallet; +use alloy_primitives::Address; +use alloy_primitives::U256; +use alloy_sol_types::sol; +use alloy_transport::BoxTransport; +use alloy_transport_ws::WsConnect; +use anyhow::Context; +use pcp_config::Config; +use pcp_types::block_commitment::{Commitment, Id, SuperBlockCommitment}; +use secure_signer::cryptography::secp256k1::Secp256k1; +use secure_signer_loader::Load; +// use secure_signing_eth::HsmSigner; +use secure_signer_eth::Signer as HsmSigner; +use serde_json::Value as JsonValue; +use std::array::TryFromSliceError; +use std::fs; +use std::path::Path; +use thiserror::Error; +use tokio_stream::StreamExt; +use tracing::info; + +#[derive(Error, Debug)] +pub enum PcpEthConnectorError { + #[error( + "PCP Settlement Transaction fails because gas estimation is too high. Estimated gas:{0} gas limit:{1}" + )] + GasLimitExceed(u128, u128), + #[error("PCP Settlement Transaction fails because account funds are insufficient. error:{0}")] + InsufficientFunds(String), + #[error("PCP Settlement Transaction send failed because :{0}")] + SendTransactionError(#[from] alloy_contract::Error), + #[error("PCP Settlement Transaction send failed during its execution :{0}")] + RpcTransactionExecution(String), + #[error("PCP Settlement SuperBlockPostconfirmed event notification error :{0}")] + EventNotificationError(#[from] alloy_sol_types::Error), + #[error("PCP Settlement SuperBlockPostconfirmed event notification stream close")] + EventNotificationStreamClosed, +} + +// Note: we prefer using the ABI because the [`sol!`](alloy_sol_types::sol) macro, when used with smart contract code directly, will not handle inheritance. +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + PCP, + "abis/PCP.json" +); + +// Note: we prefer using the ABI because the [`sol!`](alloy_sol_types::sol) macro, when used with smart contract code directly, will not handle inheritance. +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + MovementStaking, + "abis/MovementStaking.json" +); + +// Note: we prefer using the ABI because the [`sol!`](alloy_sol_types::sol) macro, when used with smart contract code directly, will not handle inheritance. +sol!( + #[allow(missing_docs)] + #[sol(rpc)] + MOVEToken, + "abis/MOVEToken.json" +); + +pub struct PcpSettlementClient

{ + run_commitment_admin_mode: bool, + rpc_provider: P, + ws_provider: RootProvider, + pub signer_address: Address, + contract_address: Address, + send_transaction_error_rules: Vec>, + gas_limit: u64, + send_transaction_retries: u32, +} + +impl + PcpSettlementClient< + FillProvider< + JoinFill< + JoinFill< + JoinFill, NonceFiller>, + ChainIdFiller, + >, + WalletFiller, + >, + RootProvider, + BoxTransport, + Ethereum, + >, + > +{ + pub async fn build_with_config(config: &Config) -> Result { + let signer_identifier: Box + Send> = + Box::new(config.settle.signer_identifier.clone()); + let signer_provider = signer_identifier.load().await?; + let signer = + HsmSigner::try_new(signer_provider, Some(config.eth_connection.eth_chain_id)).await?; + + let signer_address = signer.address(); + info!("Signer address: {}", signer_address); + let contract_address = config + .settle + .pcp_contract_address + .parse() + .context("Failed to parse the contract address for the PCP settlement client")?; + let rpc_url = config.eth_rpc_connection_url(); + let ws_url = config.eth_ws_connection_url(); + let rpc_provider = ProviderBuilder::new() + .with_recommended_fillers() + .wallet(EthereumWallet::from(signer)) + .on_builtin(&rpc_url) + .await + .context("Failed to create the RPC provider for the PCP settlement client")?; + + let client = PcpSettlementClient::build_with_provider( + config.settle.settlement_admin_mode, + rpc_provider, + ws_url, + signer_address, + contract_address, + config.transactions.gas_limit, + config.transactions.transaction_send_retries, + ) + .await + .context( + "Failed to create the PCP settlement client with the RPC provider and contract address", + )?; + Ok(client) + } +} + +impl

PcpSettlementClient

{ + async fn build_with_provider( + run_commitment_admin_mode: bool, + rpc_provider: P, + ws_url: S, + signer_address: Address, + contract_address: Address, + gas_limit: u64, + send_transaction_retries: u32, + ) -> Result + where + P: Provider + Clone, + S: Into, + { + let ws = WsConnect::new(ws_url); + + let ws_provider = ProviderBuilder::new() + .on_ws(ws) + .await + .context("Failed to create the WebSocket provider for the PCP settlement client")?; + + let rule1: Box = Box::new(SendTransactionErrorRule::::new()); + let rule2: Box = + Box::new(SendTransactionErrorRule::::new()); + let send_transaction_error_rules = vec![rule1, rule2]; + + Ok(PcpSettlementClient { + run_commitment_admin_mode, + rpc_provider, + ws_provider, + signer_address, + contract_address, + send_transaction_error_rules, + gas_limit, + send_transaction_retries, + }) + } +} + +#[async_trait::async_trait] +impl

PcpSettlementClientOperations for PcpSettlementClient

+where + P: Provider + Clone, +{ + async fn post_block_commitment( + &self, + block_commitment: SuperBlockCommitment, + ) -> Result<(), anyhow::Error> { + let contract = PCP::new(self.contract_address, &self.rpc_provider); + + let eth_block_commitment = PCP::SuperBlockCommitment { + // Currently, to simplify the API, we'll say 0 is uncommitted all other numbers are legitimate heights + height: U256::from(block_commitment.height()), + commitment: alloy_primitives::FixedBytes( + block_commitment.commitment().as_bytes().clone(), + ), + blockId: alloy_primitives::FixedBytes(block_commitment.block_id().as_bytes().clone()), + }; + + if self.run_commitment_admin_mode { + let call_builder = contract.forceLatestCommitment(eth_block_commitment); + crate::send_eth_transaction::send_transaction( + call_builder, + &self.send_transaction_error_rules, + self.send_transaction_retries, + self.gas_limit as u128, + ) + .await + } else { + let call_builder = contract.submitSuperBlockCommitment(eth_block_commitment); + crate::send_eth_transaction::send_transaction( + call_builder, + &self.send_transaction_error_rules, + self.send_transaction_retries, + self.gas_limit as u128, + ) + .await + } + } + + async fn post_block_commitment_batch( + &self, + block_commitments: Vec, + ) -> Result<(), anyhow::Error> { + let contract = PCP::new(self.contract_address, &self.rpc_provider); + + let eth_block_commitment: Vec<_> = block_commitments + .into_iter() + .map(|block_commitment| { + Ok(PCP::SuperBlockCommitment { + // Currently, to simplify the API, we'll say 0 is uncommitted all other numbers are legitimate heights + height: U256::from(block_commitment.height()), + commitment: alloy_primitives::FixedBytes( + block_commitment.commitment().as_bytes().clone(), + ), + blockId: alloy_primitives::FixedBytes( + block_commitment.block_id().as_bytes().clone(), + ), + }) + }) + .collect::, TryFromSliceError>>()?; + + let call_builder = contract.submitBatchSuperBlockCommitment(eth_block_commitment); + + crate::send_eth_transaction::send_transaction( + call_builder, + &self.send_transaction_error_rules, + self.send_transaction_retries, + self.gas_limit as u128, + ) + .await + } + + async fn force_block_commitment( + &self, + block_commitment: SuperBlockCommitment, + ) -> Result<(), anyhow::Error> { + let contract = PCP::new(self.contract_address, &self.rpc_provider); + + let eth_block_commitment = PCP::SuperBlockCommitment { + // Currently, to simplify the API, we'll say 0 is uncommitted all other numbers are legitimate heights + height: U256::from(block_commitment.height()), + commitment: alloy_primitives::FixedBytes( + block_commitment.commitment().as_bytes().clone(), + ), + blockId: alloy_primitives::FixedBytes(block_commitment.block_id().as_bytes().clone()), + }; + + let call_builder = contract.forceLatestCommitment(eth_block_commitment); + crate::send_eth_transaction::send_transaction( + call_builder, + &self.send_transaction_error_rules, + self.send_transaction_retries, + self.gas_limit as u128, + ) + .await + } + + async fn stream_block_commitments(&self) -> Result { + // Register to contract BlockCommitmentSubmitted event + + let contract = PCP::new(self.contract_address, &self.ws_provider); + let event_filter = contract.SuperBlockPostconfirmed_filter().watch().await?; + + let stream = event_filter.into_stream().map(|event| { + event + .and_then(|(commitment, _)| { + let height = commitment.height.try_into().map_err( + |err: alloy::primitives::ruint::FromUintError| { + alloy_sol_types::Error::Other(err.to_string().into()) + }, + )?; + Ok(SuperBlockCommitment::new( + height, + Id::new(commitment.blockHash.0), + Commitment::new(commitment.stateCommitment.0), + )) + }) + .map_err(|err| PcpEthConnectorError::EventNotificationError(err).into()) + }); + Ok(Box::pin(stream) as CommitmentStream) + } + + async fn get_commitment_at_height( + &self, + height: u64, + ) -> Result, anyhow::Error> { + let contract = PCP::new(self.contract_address, &self.ws_provider); + let PCP::getPostconfirmedCommitmentReturn { _0: commitment } = + contract.getPostconfirmedCommitment(U256::from(height)).call().await?; + + let return_height: u64 = commitment + .height + .try_into() + .context("Failed to convert the commitment height from U256 to u64")?; + // Commitment with height 0 mean not found + Ok((return_height != 0).then_some(SuperBlockCommitment::new( + commitment + .height + .try_into() + .context("Failed to convert the commitment height from U256 to u64")?, + Id::new(commitment.blockId.into()), + Commitment::new(commitment.commitment.into()), + ))) + } + + async fn get_posted_commitment_at_height( + &self, + height: u64, + ) -> Result, anyhow::Error> { + let contract = PCP::new(self.contract_address, &self.ws_provider); + let PCP::getValidatorCommitmentAtSuperBlockHeightReturn { _0: commitment } = contract + .getValidatorCommitmentAtSuperBlockHeight(U256::from(height), self.signer_address) + .call() + .await?; + + let return_height: u64 = commitment + .height + .try_into() + .context("Failed to convert the commitment height from U256 to u64")?; + + Ok((return_height != 0).then_some(SuperBlockCommitment::new( + commitment + .height + .try_into() + .context("Failed to convert the commitment height from U256 to u64")?, + Id::new(commitment.blockId.into()), + Commitment::new(commitment.commitment.into()), + ))) + } + + async fn get_max_tolerable_block_height(&self) -> Result { + let contract = PCP::new(self.contract_address, &self.ws_provider); + let PCP::getMaxTolerableSuperBlockHeightReturn { _0: block_height } = + contract.getMaxTolerableSuperBlockHeight().call().await?; + Ok(block_height + .try_into() + .context("Failed to convert the max tolerable block height from U256 to u64")?) + } +} + +pub struct AnvilAddressEntry { + pub address: String, + pub private_key: String, +} + +/// Read the Anvil config file keys and return all address/private keys. +pub fn read_anvil_json_file_addresses>( + anvil_conf_path: P, +) -> Result, anyhow::Error> { + let file_content = fs::read_to_string(anvil_conf_path)?; + + let json_value: JsonValue = serde_json::from_str(&file_content)?; + + // Extract the available_accounts and private_keys fields. + let available_accounts_iter = json_value["available_accounts"] + .as_array() + .expect("Available_accounts should be an array") + .iter() + .map(|v| { + let s = v.as_str().expect("Available_accounts elements should be strings"); + s.to_owned() + }); + + let private_keys_iter = json_value["private_keys"] + .as_array() + .expect("Private_keys should be an array") + .iter() + .map(|v| { + let s = v.as_str().expect("Private_keys elements should be strings"); + s.to_owned() + }); + + let res = available_accounts_iter + .zip(private_keys_iter) + .map(|(address, private_key)| AnvilAddressEntry { address, private_key }) + .collect::>(); + Ok(res) +} diff --git a/protocol/pcp/cli/client/src/lib.rs b/protocol/pcp/cli/client/src/lib.rs index 4f773726..e0c682b8 100644 --- a/protocol/pcp/cli/client/src/lib.rs +++ b/protocol/pcp/cli/client/src/lib.rs @@ -1 +1,58 @@ +use pcp_types::block_commitment::SuperBlockCommitment; +use tokio_stream::Stream; +pub mod mock; + +// FIXME: mock exports +// #[cfg(feature = "mock")] +// pub use mock::*; + +pub mod eth_client; pub mod cli; + +#[cfg(feature = "eth")] +pub use eth_client::PcpSettlementClient; + +pub mod send_eth_transaction; + +type CommitmentStream = + std::pin::Pin> + Send>>; + +#[async_trait::async_trait] +pub trait PcpSettlementClientOperations { + /// Posts a block commitment to the settlement client. + async fn post_block_commitment( + &self, + block_commitment: SuperBlockCommitment, + ) -> Result<(), anyhow::Error>; + + /// Posts a batch of block commitments to the settlement client. + async fn post_block_commitment_batch( + &self, + block_commitment: Vec, + ) -> Result<(), anyhow::Error>; + + /// Forces a block commitment + /// This will only work in admin mode + async fn force_block_commitment( + &self, + block_commitment: SuperBlockCommitment, + ) -> Result<(), anyhow::Error>; + + /// Streams block commitments from the settlement client. + async fn stream_block_commitments(&self) -> Result; + + /// Gets the accepted commitment at the given height. + async fn get_commitment_at_height( + &self, + height: u64, + ) -> Result, anyhow::Error>; + + /// Gets the commitment this validator has made at a given height + async fn get_posted_commitment_at_height( + &self, + height: u64, + ) -> Result, anyhow::Error>; + + /// Gets the max tolerable block height. + async fn get_max_tolerable_block_height(&self) -> Result; +} diff --git a/protocol/pcp/cli/client/src/mock.rs b/protocol/pcp/cli/client/src/mock.rs new file mode 100644 index 00000000..c5e36b6c --- /dev/null +++ b/protocol/pcp/cli/client/src/mock.rs @@ -0,0 +1,247 @@ +use crate::{CommitmentStream, PcpSettlementClientOperations}; +use pcp_config::Config; +use pcp_types::block_commitment::SuperBlockCommitment; +use std::collections::BTreeMap; +use std::sync::{Arc, Mutex}; +use tokio::sync::{mpsc, RwLock}; +use tokio_stream::wrappers::ReceiverStream; +use tracing::info; + +#[derive(Clone)] +pub struct PcpSettlementClient { + commitments: Arc>>, + stream_sender: mpsc::Sender>, + stream_receiver: Arc>>>>, + pub current_height: Arc>, + pub block_lead_tolerance: u64, + paused_at_height: Arc>>, +} + +impl PcpSettlementClient { + pub fn new() -> Self { + let (stream_sender, receiver) = mpsc::channel(10); + PcpSettlementClient { + commitments: Arc::new(RwLock::new(BTreeMap::new())), + stream_sender, + stream_receiver: Arc::new(Mutex::new(Some(receiver))), + current_height: Arc::new(RwLock::new(0)), + block_lead_tolerance: 16, + paused_at_height: Arc::new(RwLock::new(None)), + } + } + + pub async fn build_with_config(_config: &Config) -> Result { + info!("Building with config."); + Ok(Self::new()) + } + + /// Overrides the commitment to settle on at given height. + /// + /// To have effect, this method needs to be called before a commitment is + /// posted for this height with the `PcpSettlementClientOperations` API. + pub async fn override_block_commitment(&self, commitment: SuperBlockCommitment) { + let mut commitments = self.commitments.write().await; + commitments.insert(commitment.height(), commitment); + } + + /// Stop streaming commitments after the given height. + /// + /// Any posted commitments will be accumulated. + pub async fn pause_after(&self, height: u64) { + let mut paused_at_height = self.paused_at_height.write().await; + *paused_at_height = Some(height); + } + + /// Stream any commitments that have been posted following the height + /// at which `pause` was called, and resume streaming any newly posted + /// commitments + pub async fn resume(&self) { + let resume_height = { + let mut paused_at_height = self.paused_at_height.write().await; + paused_at_height.take().expect("not paused") + }; + { + let commitments = self.commitments.read().await; + for (_, commitment) in commitments.range(resume_height + 1..) { + println!("resume sends commitment for height {}", commitment.height()); + self.stream_sender.send(Ok(commitment.clone())).await.unwrap(); + } + } + } +} + +#[async_trait::async_trait] +impl PcpSettlementClientOperations for PcpSettlementClient { + async fn post_block_commitment( + &self, + block_commitment: SuperBlockCommitment, + ) -> Result<(), anyhow::Error> { + let height = block_commitment.height(); + + let settled = { + let mut commitments = self.commitments.write().await; + commitments.entry(block_commitment.height()).or_insert(block_commitment).clone() + }; + { + let paused_at_height = self.paused_at_height.read().await; + match *paused_at_height { + Some(ph) if ph < height => {} + _ => { + self.stream_sender.send(Ok(settled)).await?; + } + } + } + + { + let mut current_height = self.current_height.write().await; + if height > *current_height { + *current_height = height; + } + } + + Ok(()) + } + + async fn post_block_commitment_batch( + &self, + block_commitments: Vec, + ) -> Result<(), anyhow::Error> { + for commitment in block_commitments { + self.post_block_commitment(commitment).await?; + } + Ok(()) + } + + async fn force_block_commitment( + &self, + _block_commitment: SuperBlockCommitment, + ) -> Result<(), anyhow::Error> { + unimplemented!() + } + + async fn get_posted_commitment_at_height( + &self, + _height: u64, + ) -> Result, anyhow::Error> { + unimplemented!(); + } + + async fn stream_block_commitments(&self) -> Result { + let receiver = self + .stream_receiver + .lock() + .unwrap() + .take() + .expect("stream_block_commitments already called"); + Ok(Box::pin(ReceiverStream::new(receiver))) + } + + async fn get_commitment_at_height( + &self, + height: u64, + ) -> Result, anyhow::Error> { + let guard = self.commitments.read().await; + Ok(guard.get(&height).cloned()) + } + + async fn get_max_tolerable_block_height(&self) -> Result { + Ok(*self.current_height.read().await + self.block_lead_tolerance) + } +} + +#[cfg(test)] +pub mod test { + + use super::*; + use pcp_types::block_commitment::Commitment; + + use futures::future; + use tokio::select; + use tokio_stream::StreamExt; + + #[tokio::test] + async fn test_post_block_commitment() -> Result<(), anyhow::Error> { + let client = PcpSettlementClient::new(); + let commitment = SuperBlockCommitment::new(1, Default::default(), Commitment::test()); + client.post_block_commitment(commitment.clone()).await.unwrap(); + let guard = client.commitments.write().await; + assert_eq!(guard.get(&1), Some(&commitment)); + + assert_eq!(*client.current_height.read().await, 1); + assert_eq!(client.get_max_tolerable_block_height().await?, 17); + + Ok(()) + } + + #[tokio::test] + async fn test_post_block_commitment_batch() -> Result<(), anyhow::Error> { + let client = PcpSettlementClient::new(); + let commitment = SuperBlockCommitment::new(1, Default::default(), Commitment::test()); + let commitment2 = SuperBlockCommitment::new(1, Default::default(), Commitment::test()); + client + .post_block_commitment_batch(vec![commitment.clone(), commitment2.clone()]) + .await + .unwrap(); + let guard = client.commitments.write().await; + assert_eq!(guard.get(&1), Some(&commitment)); + assert_eq!(guard.get(&2), Some(&commitment2)); + Ok(()) + } + + #[tokio::test] + async fn test_stream_block_commitments() -> Result<(), anyhow::Error> { + let client = PcpSettlementClient::new(); + let commitment = SuperBlockCommitment::new(1, Default::default(), Commitment::test()); + client.post_block_commitment(commitment.clone()).await.unwrap(); + let mut stream = client.stream_block_commitments().await?; + assert_eq!(stream.next().await.unwrap().unwrap(), commitment); + Ok(()) + } + + #[tokio::test] + async fn test_override_block_commitments() -> Result<(), anyhow::Error> { + let client = PcpSettlementClient::new(); + let commitment = SuperBlockCommitment::new(2, Default::default(), Commitment::test()); + client.override_block_commitment(commitment.clone()).await; + client + .post_block_commitment(SuperBlockCommitment::new(2, Default::default(), Commitment::test())) + .await + .unwrap(); + let mut stream = client.stream_block_commitments().await?; + assert_eq!(stream.next().await.expect("stream has ended")?, commitment); + Ok(()) + } + + #[tokio::test] + async fn test_pause() -> Result<(), anyhow::Error> { + let client = PcpSettlementClient::new(); + let commitment = SuperBlockCommitment::new(2, Default::default(), Commitment::test()); + client.pause_after(1).await; + client.post_block_commitment(commitment.clone()).await?; + let commitment2 = SuperBlockCommitment::new(2, Default::default(), Commitment::test()); + client.post_block_commitment(commitment2).await?; + let mut stream = client.stream_block_commitments().await?; + assert_eq!(stream.next().await.expect("stream has ended")?, commitment); + select! { + biased; + _ = stream.next() => panic!("stream should be paused"), + _ = future::ready(()) => {} + } + Ok(()) + } + + #[tokio::test] + async fn test_resume() -> Result<(), anyhow::Error> { + let client = PcpSettlementClient::new(); + let commitment = SuperBlockCommitment::new(2, Default::default(), Commitment::test()); + client.pause_after(1).await; + client.post_block_commitment(commitment.clone()).await?; + let commitment2 = SuperBlockCommitment::new(2, Default::default(), Commitment::test()); + client.post_block_commitment(commitment2.clone()).await?; + let mut stream = client.stream_block_commitments().await?; + assert_eq!(stream.next().await.expect("stream has ended")?, commitment); + client.resume().await; + assert_eq!(stream.next().await.expect("stream has ended")?, commitment2); + Ok(()) + } +} diff --git a/protocol/pcp/cli/client/src/send_eth_transaction.rs b/protocol/pcp/cli/client/src/send_eth_transaction.rs new file mode 100644 index 00000000..fd11fded --- /dev/null +++ b/protocol/pcp/cli/client/src/send_eth_transaction.rs @@ -0,0 +1,148 @@ +use crate::eth_client::PcpEthConnectorError; +use alloy::providers::Provider; +use alloy_contract::CallBuilder; +use alloy_contract::CallDecoder; +use alloy_network::Ethereum; +use alloy_transport::{Transport, TransportError}; +use std::marker::PhantomData; +use tracing::info; + +// Define a rule to verify the error generated when a transaction is send to determine if: +// * the Transaction must me resend with more gas: return Ok(true) +// * a specific error must be return: return Err(PcpEthConnectorError::xxx); +// * the rule doesn't apply: return Ok(false) +pub trait VerifyRule: Sync + Send { + fn verify(&self, error: &alloy_contract::Error) -> Result; +} + +pub struct SendTransactionErrorRule { + _kind: PhantomData, +} + +impl SendTransactionErrorRule { + pub fn new() -> Self { + SendTransactionErrorRule { _kind: PhantomData } + } +} + +// Define the current 2 errors managed. +pub struct UnderPriced; +pub struct InsufficentFunds; + +impl VerifyRule for SendTransactionErrorRule { + fn verify(&self, error: &alloy_contract::Error) -> Result { + let alloy_contract::Error::TransportError(TransportError::ErrorResp(payload)) = error + else { + return Ok(false); + }; + + if payload.code == -32000 && payload.message.contains("transaction underpriced") { + Ok(true) + } else { + Ok(false) + } + } +} + +impl VerifyRule for SendTransactionErrorRule { + fn verify(&self, error: &alloy_contract::Error) -> Result { + let alloy_contract::Error::TransportError(TransportError::ErrorResp(payload)) = error + else { + return Ok(false); + }; + + if payload.code == -32000 && payload.message.contains("insufficient funds") { + Err(PcpEthConnectorError::InsufficientFunds(payload.message.clone())) + } else { + Ok(false) + } + } +} + +pub async fn send_transaction< + P: Provider + Clone, + T: Transport + Clone, + D: CallDecoder + Clone, +>( + base_call_builder: CallBuilder, + send_transaction_error_rules: &[Box], + number_retry: u32, + gas_limit: u128, +) -> Result<(), anyhow::Error> { + info!("Sending transaction with gas limit: {}", gas_limit); + //validate gas price. + let mut estimate_gas = base_call_builder.estimate_gas().await.expect("Failed to estimate gas"); + // Add 20% because initial gas estimate are too low. + estimate_gas += (estimate_gas * 20) / 100; + + println!("estimated_gas: {}", estimate_gas); + + // Sending Transaction automatically can lead to errors that depend on the state for Eth. + // It's convenient to manage some of them automatically to avoid to fail commitment Transaction. + // I define a first one but other should be added depending on the test with mainnet. + for _ in 0..number_retry { + let call_builder = base_call_builder.clone().gas(estimate_gas); + + //detect if the gas price doesn't execeed the limit. + let gas_price = call_builder.provider.get_gas_price().await?; + let transaction_fee_wei = estimate_gas * gas_price; + if transaction_fee_wei > gas_limit { + return Err(PcpEthConnectorError::GasLimitExceed(transaction_fee_wei, gas_limit).into()); + } + + info!("Sending transaction with gas: {}", estimate_gas); + + //send the Transaction and detect send error. + let pending_transaction = match call_builder.send().await { + Ok(pending_transaction) => pending_transaction, + Err(err) => { + //apply defined rules. + for rule in send_transaction_error_rules { + // Verify all rules. If one rule return true or an error stop verification. + // If true retry with more gas else return the error. + if rule.verify(&err)? { + //increase gas of 10% and retry + estimate_gas += (estimate_gas * 10) / 100; + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; + continue; + } + } + + return Err(PcpEthConnectorError::from(err).into()); + } + }; + + match pending_transaction.get_receipt().await { + // Transaction execution fail + Ok(transaction_receipt) if !transaction_receipt.status() => { + tracing::debug!( + "transaction_receipt.gas_used: {} / estimate_gas: {estimate_gas}", + transaction_receipt.gas_used + ); + // Some valid Tx can abort cause of insufficient gas without consuming all its gas. + // Define a threshold a little less than estimated gas to detect them. + let tx_gas_consumption_threshold = estimate_gas - (estimate_gas * 10) / 100; + if transaction_receipt.gas_used >= tx_gas_consumption_threshold { + tracing::info!("Send commitment Transaction fail because of insufficient gas, receipt:{transaction_receipt:?} "); + estimate_gas += (estimate_gas * 30) / 100; + continue; + } else { + return Err(PcpEthConnectorError::RpcTransactionExecution(format!( + "Send commitment Transaction fail, abort Transaction, receipt:{transaction_receipt:?}" + )) + .into()); + } + } + Ok(_) => return Ok(()), + Err(err) => { + return Err(PcpEthConnectorError::RpcTransactionExecution(err.to_string()).into()) + } + }; + } + + //Max retry exceed + Err(PcpEthConnectorError::RpcTransactionExecution( + "Send commitment Transaction fail because of exceed max retry".to_string(), + ) + .into()) +} diff --git a/protocol/pcp/clients/eth/abis/MOVEToken.json b/protocol/pcp/clients/eth/abis/MOVEToken.json index 301937e6..0191eb8a 100644 --- a/protocol/pcp/clients/eth/abis/MOVEToken.json +++ b/protocol/pcp/clients/eth/abis/MOVEToken.json @@ -1 +1 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"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":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_custody","type":"address","internalType":"address"}],"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":"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":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"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":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"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":"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":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6118b5806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;447:39;;;;;;;;;-1:-1:-1;462:22:115;:20;:22::i;:::-;299:1259;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:140;;;8087:29:20;;146:2:140;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:140:-;299:1259:115;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;2716:144:22;;;:::i;:::-;;;;;;;:::i;5210:186::-;;;;;;:::i;:::-;;:::i;3896:152::-;4027:14;;3896:152;;;1756:25:140;;;1744:2;1729:18;3896:152:22;1610:177:140;5988:244:22;;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;:::i;:::-;;:::i;5246:136::-;;;;;;:::i;:::-;;:::i;:::-;;1474:82:115;;;1548:1;3031:36:140;;3019:2;3004:18;1474:82:115;2889:184:140;3085:112:23;;;:::i;6348:245:19:-;;;;;;:::i;:::-;;:::i;981:342:115:-;;;;;;:::i;:::-;;:::i;4106:171:22:-;;;;;;:::i;:::-;;:::i;2824:154:23:-;;;;;;:::i;:::-;;:::i;5173:903:26:-;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:19:-;;;;;;:::i;:::-;;:::i;2973:148:22:-;;;:::i;2317:49:19:-;;2362:4;2317:49;;4472:178:22;;;;;;:::i;:::-;;:::i;2098:672:23:-;;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;:::i;:::-;;:::i;4708:195:22:-;;;;;;:::i;:::-;;:::i;3443:202:19:-;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;2716:144:22:-;2761:13;2786:22;-1:-1:-1;;;;;;;;;;;2811:18:22;2786:43;;2846:1;:7;;2839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:24;5337:31:22;966:10:24;5353:7:22;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:22;;5210:186;-1:-1:-1;;;5210:186:22:o;5988:244::-;6075:4;966:10:24;6131:37:22;6147:4;966:10:24;6162:5:22;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:22;;5988:244;-1:-1:-1;;;;5988:244:22:o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;3085:112:23:-;3144:7;3170:20;:18;:20::i;:::-;3163:27;;3085:112;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;981:342:115:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;-1:-1:-1;;;;;1072:20:115;::::1;::::0;;::::1;::::0;:46:::1;;-1:-1:-1::0;;;;;;1096:22:115;::::1;::::0;::::1;1072:46;1064:55;;;::::0;::::1;;1129:32;;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;:12:::1;:32::i;:::-;1171:40;;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;:23:::1;:40::i;:::-;1221:38;2362:4:19;1252:6:115::0;1221:10:::1;:38::i;:::-;-1:-1:-1::0;1269:47:115::1;1275:8:::0;1299:16:::1;1548:1:::0;1299:2:::1;:16;:::i;:::-;1285:30;::::0;:11:::1;:30;:::i;:::-;1269:5;:47::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;7960:50:140;;5142:14:20;;7948:2:140;7933:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;981:342:115;;:::o;4106:171:22:-;4171:7;;-1:-1:-1;;;;;;;;;;;4215:18:22;-1:-1:-1;;;;;4250:20:22;;;:11;:20;;;;;;;;-1:-1:-1;;4250:20:22;;;;;4106:171::o;2824:154:23:-;2926:7;2952:19;2965:5;2952:12;:19::i;5173:903:26:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:26;;5511:45;;-1:-1:-1;5777:18:26;:43;;;;-1:-1:-1;5799:16:26;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:26;;8223:2:140;5769:77:26;;;8205:21:140;8262:2;8242:18;;;8235:30;-1:-1:-1;;;8281:18:140;;;8274:51;8342:18;;5769:77:26;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:26;;;-1:-1:-1;5857:212:26;;-1:-1:-1;5965:13:26;;-1:-1:-1;6000:4:26;;-1:-1:-1;6027:1:26;-1:-1:-1;6043:16:26;-1:-1:-1;5857:212:26;-1:-1:-1;;5173:903:26:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;2973:148:22:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:22;3098:16;;;:::i;4472:178::-;4541:4;966:10:24;4595:27:22;966:10:24;4612:2:22;4616:5;4595:9;:27::i;2098:672:23:-;2319:8;2301:15;:26;2297:97;;;2350:33;;-1:-1:-1;;;2350:33:23;;;;;1756:25:140;;;1729:18;;2350:33:23;1610:177:140;2297:97:23;2404:18;1279:95;2463:5;2470:7;2479:5;2486:16;2496:5;-1:-1:-1;;;;;1954:16:25;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2486:16:23;2435:78;;;;;;8790:25:140;;;;-1:-1:-1;;;;;8851:32:140;;;8831:18;;;8824:60;8920:32;;;;8900:18;;;8893:60;8969:18;;;8962:34;9012:19;;;9005:35;9056:19;;;9049:35;;;8762:19;;2435:78:23;;;;;;;;;;;;2425:89;;;;;;2404:110;;2525:12;2540:28;2557:10;2540:16;:28::i;:::-;2525:43;;2579:14;2596:28;2610:4;2616:1;2619;2622;2596:13;:28::i;:::-;2579:45;;2648:5;-1:-1:-1;;;;;2638:15:23;:6;-1:-1:-1;;;;;2638:15:23;;2634:88;;2676:35;;-1:-1:-1;;;2676:35:23;;-1:-1:-1;;;;;9287:32:140;;;2676:35:23;;;9269:51:140;9356:32;;9336:18;;;9329:60;9242:18;;2676:35:23;9095:300:140;2634:88:23;2732:31;2741:5;2748:7;2757:5;2732:8;:31::i;:::-;2287:483;;;2098:672;;;;;;;:::o;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;4708:195:22:-:0;-1:-1:-1;;;;;4867:20:22;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;10001:128::-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11745:476::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:22;:36;11906:309;;;11985:5;11966:16;:24;11962:130;;;12017:60;;-1:-1:-1;;;12017:60:22;;-1:-1:-1;;;;;9620:32:140;;12017:60:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;12017:60:22;9400:345:140;11962:130:22;12133:57;12142:5;12149:7;12177:5;12158:16;:24;12184:5;12133:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:22;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:22;;6756:1;6729:30;;;9896:51:140;9869:18;;6729:30:22;9750:203:140;6684:86:22;-1:-1:-1;;;;;6783:16:22;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:22;;6851:1;6822:32;;;9896:51:140;9869:18;;6822:32:22;9750:203:140;6779:86:22;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;4015:109:26;4068:7;4094:23;:21;:23::i;7892:388:19:-;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2282:147:22;6931:20:20;:18;:20::i;:::-;2384:38:22::1;2407:5;2414:7;2384:22;:38::i;:::-;2282:147:::0;;:::o;3599:330:26:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:26;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:26::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:26::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:26:o;8733:208:22:-;-1:-1:-1;;;;;8803:21:22;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:22;;8876:1;8847:32;;;9896:51:140;9869:18;;8847:32:22;9750:203:140;8799:91:22;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;1259:164:25:-;1319:7;;1005:21;1364:19;886:156;6300:155:26;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:26;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:26;2720:156;4946:176;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3501:4:61;3495:11;-1:-1:-1;;;3519:23:61;;3571:4;3562:14;;3555:39;;;;3623:4;3614:14;;3607:34;3679:4;3664:20;;;3326:374;6887:260:60;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:60;;6887:260;-1:-1:-1;;;;;;6887:260:60:o;10976:487:22:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:22;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:22;;11212:1;11183:32;;;9896:51:140;9869:18;;11183:32:22;9750:203:140;11137:89:22;-1:-1:-1;;;;;11239:21:22;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:22;;11311:1;11283:31;;;9896:51:140;9869:18;;11283:31:22;9750:203:140;11235:90:22;-1:-1:-1;;;;;11334:20:22;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:22;11424:5;-1:-1:-1;;;;;11415:31:22;;11440:5;11415:31;;;;1756:25:140;;1744:2;1729:18;;1610:177;11415:31:22;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:22;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:22;;-1:-1:-1;7358:546:22;;-1:-1:-1;;;;;7574:17:22;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:22;;-1:-1:-1;;;;;9620:32:140;;7655:50:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;7655:50:22;9400:345:140;7605:115:22;-1:-1:-1;;;;;7840:17:22;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:22;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:22;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:22;8367:4;-1:-1:-1;;;;;8358:25:22;;8377:5;8358:25;;;;1756::140;;1744:2;1729:18;;1610:177;8358:25:22;;;;;;;;7295:1095;7220:1170;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;12404:32:140;;4514:47:19;;;12386:51:140;12453:18;;;12446:34;;;12359:18;;4514:47:19;12212:274:140;4130:191:26;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;12750:25:140;;;;12791:18;;12784:34;;;;12834:18;;;12827:34;4284:13:26;12877:18:140;;;12870:34;4307:4:26;12920:19:140;;;12913:61;12722:19;;4221:92:26;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;7146:73;7084:141::o;2435:216:22:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:22;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:22::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;5203:1551:60:-:0;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:60;;-1:-1:-1;6385:30:60;;-1:-1:-1;6417:1:60;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;13212:25:140;;;13285:4;13273:17;;13253:18;;;13246:45;;;;13307:18;;;13300:34;;;13350:18;;;13343:34;;;6541:24:60;;13184:19:140;;6541:24:60;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:60;;-1:-1:-1;;6541:24:60;;;-1:-1:-1;;;;;;;6579:20:60;;6575:113;;-1:-1:-1;6631:1:60;;-1:-1:-1;6635:29:60;;-1:-1:-1;6631:1:60;;-1:-1:-1;6615:62:60;;6575:113;6706:6;-1:-1:-1;6714:20:60;;-1:-1:-1;6714:20:60;;-1:-1:-1;5203:1551:60;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:60;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:60;;;;;1756:25:140;;;1729:18;;7634:46:60;1610:177:140;7563:243:60;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:60;;;;;1756:25:140;;;1729:18;;7763:32:60;1610:177:140;7058:687:26;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:26;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:26;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:26:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:26:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:26;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:26;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:26:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:26:o;14:286:140:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:140:o;497:400::-;539:3;577:5;571:12;604:6;599:3;592:19;629:1;639:139;653:6;650:1;647:13;639:139;;;761:4;746:13;;;742:24;;736:31;716:11;;;712:22;;705:63;668:12;639:139;;;643:3;823:1;816:4;807:6;802:3;798:16;794:27;787:38;886:4;879:2;875:7;870:2;862:6;858:15;854:29;849:3;845:39;841:50;834:57;;;497:400;;;;:::o;902:220::-;1051:2;1040:9;1033:21;1014:4;1071:45;1112:2;1101:9;1097:18;1089:6;1071:45;:::i;1127:173::-;1195:20;;-1:-1:-1;;;;;1244:31:140;;1234:42;;1224:70;;1290:1;1287;1280:12;1224:70;1127:173;;;:::o;1305:300::-;1373:6;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1473:29;1492:9;1473:29;:::i;:::-;1463:39;1571:2;1556:18;;;;1543:32;;-1:-1:-1;;;1305:300:140:o;1792:374::-;1869:6;1877;1885;1938:2;1926:9;1917:7;1913:23;1909:32;1906:52;;;1954:1;1951;1944:12;1906:52;1977:29;1996:9;1977:29;:::i;:::-;1967:39;;2025:38;2059:2;2048:9;2044:18;2025:38;:::i;:::-;1792:374;;2015:48;;-1:-1:-1;;;2132:2:140;2117:18;;;;2104:32;;1792:374::o;2171:226::-;2230:6;2283:2;2271:9;2262:7;2258:23;2254:32;2251:52;;;2299:1;2296;2289:12;2251:52;-1:-1:-1;2344:23:140;;2171:226;-1:-1:-1;2171:226:140:o;2584:300::-;2652:6;2660;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2774:23;;;-1:-1:-1;2840:38:140;2874:2;2859:18;;2840:38;:::i;:::-;2830:48;;2584:300;;;;;:::o;3078:260::-;3146:6;3154;3207:2;3195:9;3186:7;3182:23;3178:32;3175:52;;;3223:1;3220;3213:12;3175:52;3246:29;3265:9;3246:29;:::i;:::-;3236:39;;3294:38;3328:2;3317:9;3313:18;3294:38;:::i;3343:186::-;3402:6;3455:2;3443:9;3434:7;3430:23;3426:32;3423:52;;;3471:1;3468;3461:12;3423:52;3494:29;3513:9;3494:29;:::i;3534:1238::-;3940:3;3935;3931:13;3923:6;3919:26;3908:9;3901:45;3982:3;3977:2;3966:9;3962:18;3955:31;3882:4;4009:46;4050:3;4039:9;4035:19;4027:6;4009:46;:::i;:::-;4103:9;4095:6;4091:22;4086:2;4075:9;4071:18;4064:50;4137:33;4163:6;4155;4137:33;:::i;:::-;4201:2;4186:18;;4179:34;;;-1:-1:-1;;;;;4250:32:140;;4244:3;4229:19;;4222:61;4270:3;4299:19;;4292:35;;;4364:22;;;4358:3;4343:19;;4336:51;4436:13;;4458:22;;;4508:2;4534:15;;;;-1:-1:-1;4496:15:140;;;;-1:-1:-1;4577:169:140;4591:6;4588:1;4585:13;4577:169;;;4652:13;;4640:26;;4695:2;4721:15;;;;4686:12;;;;4613:1;4606:9;4577:169;;;-1:-1:-1;4763:3:140;;3534:1238;-1:-1:-1;;;;;;;;;;;3534:1238:140:o;4777:903::-;4888:6;4896;4904;4912;4920;4928;4936;4989:3;4977:9;4968:7;4964:23;4960:33;4957:53;;;5006:1;5003;4996:12;4957:53;5029:29;5048:9;5029:29;:::i;:::-;5019:39;;5077:38;5111:2;5100:9;5096:18;5077:38;:::i;:::-;5067:48;-1:-1:-1;5184:2:140;5169:18;;5156:32;;-1:-1:-1;5285:2:140;5270:18;;5257:32;;-1:-1:-1;5367:3:140;5352:19;;5339:33;5416:4;5403:18;;5391:31;;5381:59;;5436:1;5433;5426:12;5381:59;4777:903;;;;-1:-1:-1;4777:903:140;;;;5459:7;5539:3;5524:19;;5511:33;;-1:-1:-1;5643:3:140;5628:19;;;5615:33;;4777:903;-1:-1:-1;;4777:903:140:o;5685:380::-;5764:1;5760:12;;;;5807;;;5828:61;;5882:4;5874:6;5870:17;5860:27;;5828:61;5935:2;5927:6;5924:14;5904:18;5901:38;5898:161;;5981:10;5976:3;5972:20;5969:1;5962:31;6016:4;6013:1;6006:15;6044:4;6041:1;6034:15;5898:161;;5685:380;;;:::o;6070:127::-;6131:10;6126:3;6122:20;6119:1;6112:31;6162:4;6159:1;6152:15;6186:4;6183:1;6176:15;6202:375;6290:1;6308:5;6322:249;6343:1;6333:8;6330:15;6322:249;;;6393:4;6388:3;6384:14;6378:4;6375:24;6372:50;;;6402:18;;:::i;:::-;6452:1;6442:8;6438:16;6435:49;;;6466:16;;;;6435:49;6549:1;6545:16;;;;;6505:15;;6322:249;;;6202:375;;;;;;:::o;6582:902::-;6631:5;6661:8;6651:80;;-1:-1:-1;6702:1:140;6716:5;;6651:80;6750:4;6740:76;;-1:-1:-1;6787:1:140;6801:5;;6740:76;6832:4;6850:1;6845:59;;;;6918:1;6913:174;;;;6825:262;;6845:59;6875:1;6866:10;;6889:5;;;6913:174;6950:3;6940:8;6937:17;6934:43;;;6957:18;;:::i;:::-;-1:-1:-1;;7013:1:140;6999:16;;7072:5;;6825:262;;7171:2;7161:8;7158:16;7152:3;7146:4;7143:13;7139:36;7133:2;7123:8;7120:16;7115:2;7109:4;7106:12;7102:35;7099:77;7096:203;;;-1:-1:-1;7208:19:140;;;7284:5;;7096:203;7331:42;-1:-1:-1;;7356:8:140;7350:4;7331:42;:::i;:::-;7409:6;7405:1;7401:6;7397:19;7388:7;7385:32;7382:58;;;7420:18;;:::i;:::-;7458:20;;6582:902;-1:-1:-1;;;6582:902:140:o;7489:140::-;7547:5;7576:47;7617:4;7607:8;7603:19;7597:4;7576:47;:::i;7634:168::-;7707:9;;;7738;;7755:15;;;7749:22;;7735:37;7725:71;;7776:18;;:::i;8371:127::-;8432:10;8427:3;8423:20;8420:1;8413:31;8463:4;8460:1;8453:15;8487:4;8484:1;8477:15;10084:518;10186:2;10181:3;10178:11;10175:421;;;10222:5;10219:1;10212:16;10266:4;10263:1;10253:18;10336:2;10324:10;10320:19;10317:1;10313:27;10307:4;10303:38;10372:4;10360:10;10357:20;10354:47;;;-1:-1:-1;10395:4:140;10354:47;10450:2;10445:3;10441:12;10438:1;10434:20;10428:4;10424:31;10414:41;;10505:81;10523:2;10516:5;10513:13;10505:81;;;10582:1;10568:16;;10549:1;10538:13;10505:81;;10778:1299;10904:3;10898:10;10931:18;10923:6;10920:30;10917:56;;;10953:18;;:::i;:::-;10982:97;11072:6;11032:38;11064:4;11058:11;11032:38;:::i;:::-;11026:4;10982:97;:::i;:::-;11128:4;11159:2;11148:14;;11176:1;11171:649;;;;11864:1;11881:6;11878:89;;;-1:-1:-1;11933:19:140;;;11927:26;11878:89;-1:-1:-1;;10735:1:140;10731:11;;;10727:24;10723:29;10713:40;10759:1;10755:11;;;10710:57;11980:81;;11141:930;;11171:649;10031:1;10024:14;;;10068:4;10055:18;;-1:-1:-1;;11207:20:140;;;11325:222;11339:7;11336:1;11333:14;11325:222;;;11421:19;;;11415:26;11400:42;;11528:4;11513:20;;;;11481:1;11469:14;;;;11355:12;11325:222;;;11329:3;11575:6;11566:7;11563:19;11560:201;;;11636:19;;;11630:26;-1:-1:-1;;11719:1:140;11715:14;;;11731:3;11711:24;11707:37;11703:42;11688:58;11673:74;;11560:201;-1:-1:-1;;;;11807:1:140;11791:14;;;11787:22;11774:36;;-1:-1:-1;10778:1299:140:o;12082:125::-;12147:9;;;12168:10;;;12165:36;;;12181:18;;:::i;13388:127::-;13449:10;13444:3;13440:20;13437:1;13430:31;13480:4;13477:1;13470:15;13504:4;13501:1;13494:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address)":"485cc955","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":\"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\":[{\"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\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":[],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":[{\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"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.\"}],\"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.\"}]},\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Disables potential implementation exploit\"},\"decimals()\":{\"details\":\"Returns the number of decimals\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address)\":{\"details\":\"Initializes the contract with initial parameters.\",\"params\":{\"_custody\":\"The address of the custody account.\",\"_owner\":\"The address of the owner who receives default admin role.\"}},\"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.\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decimals()\":{\"notice\":\"decimals is set to 8, following the Movement network standard decimals\"},\"initialize(address,address)\":{\"notice\":\"The ERC20 token is named \\\"Movement\\\" with symbol \\\"MOVE\\\".EIP712 domain version is set to \\\"1\\\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/MOVEToken.sol\":\"MOVEToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"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\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251\",\"dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d\"]},\"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\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"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/token/MOVEToken.sol\":{\"keccak256\":\"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a\",\"dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"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":"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":[{"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","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":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","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":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[],"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":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_custody","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"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":[{"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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"}]}],"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"constructor":{"details":"Disables potential implementation exploit"},"decimals()":{"details":"Returns the number of decimals"},"eip712Domain()":{"details":"See {IERC-5267}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address)":{"details":"Initializes the contract with initial parameters.","params":{"_custody":"The address of the custody account.","_owner":"The address of the owner who receives default admin role."}},"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."},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."}},"version":1},"userdoc":{"kind":"user","methods":{"decimals()":{"notice":"decimals is set to 8, following the Movement network standard decimals"},"initialize(address,address)":{"notice":"The ERC20 token is named \"Movement\" with symbol \"MOVE\".EIP712 domain version is set to \"1\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address."}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/MOVEToken.sol":"MOVEToken"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"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":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"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/Strings.sol":{"keccak256":"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c","urls":["bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251","dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d"],"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":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/token/MOVEToken.sol":{"keccak256":"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22","urls":["bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a","dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H"],"license":"MIT"}},"version":1},"id":115} \ No newline at end of file +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DOMAIN_SEPARATOR","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"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":"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":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_custody","type":"address","internalType":"address"}],"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":"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":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"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":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"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":"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":"InvalidAccountNonce","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"currentNonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]}],"bytecode":{"object":"0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6118b5806100d96000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;447:39;;;;;;;;;-1:-1:-1;462:22:115;:20;:22::i;:::-;299:1259;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:140;;;8087:29:20;;146:2:140;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:140:-;299:1259:115;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405234801561001057600080fd5b50600436106101375760003560e01c8063485cc955116100b857806395d89b411161007c57806395d89b4114610289578063a217fddf14610291578063a9059cbb14610299578063d505accf146102ac578063d547741f146102bf578063dd62ed3e146102d257600080fd5b8063485cc9551461022257806370a08231146102355780637ecebe001461024857806384b0196e1461025b57806391d148541461027657600080fd5b8063248a9ca3116100ff578063248a9ca3146101d05780632f2ff15d146101e3578063313ce567146101f85780633644e5151461020757806336568abe1461020f57600080fd5b806301ffc9a71461013c57806306fdde0314610164578063095ea7b31461017957806318160ddd1461018c57806323b872dd146101bd575b600080fd5b61014f61014a3660046112db565b6102e5565b60405190151581526020015b60405180910390f35b61016c61031c565b60405161015b9190611352565b61014f610187366004611381565b6103c5565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace02545b60405190815260200161015b565b61014f6101cb3660046113ab565b6103dd565b6101af6101de3660046113e8565b610401565b6101f66101f1366004611401565b610423565b005b6040516008815260200161015b565b6101af610445565b6101f661021d366004611401565b610454565b6101f661023036600461142d565b61048c565b6101af610243366004611457565b610676565b6101af610256366004611457565b6106a9565b6102636106b4565b60405161015b9796959493929190611472565b61014f610284366004611401565b610765565b61016c61079d565b6101af600081565b61014f6102a7366004611381565b6107dc565b6101f66102ba36600461150a565b6107ea565b6101f66102cd366004611401565b610943565b6101af6102e036600461142d565b61095f565b60006001600160e01b03198216637965db0b60e01b148061031657506301ffc9a760e01b6001600160e01b03198316145b92915050565b606060006000805160206118208339815191525b90508060030180546103419061157d565b80601f016020809104026020016040519081016040528092919081815260200182805461036d9061157d565b80156103ba5780601f1061038f576101008083540402835291602001916103ba565b820191906000526020600020905b81548152906001019060200180831161039d57829003601f168201915b505050505091505090565b6000336103d38185856109a9565b5060019392505050565b6000336103eb8582856109b6565b6103f6858585610a17565b506001949350505050565b6000908152600080516020611860833981519152602052604090206001015490565b61042c82610401565b61043581610a76565b61043f8383610a83565b50505050565b600061044f610b28565b905090565b6001600160a01b038116331461047d5760405163334bd91960e11b815260040160405180910390fd5b6104878282610b32565b505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104d25750825b905060008267ffffffffffffffff1660011480156104ef5750303b155b9050811580156104fd575080155b1561051b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561054557845460ff60401b1916600160401b1785555b6001600160a01b0387161580159061056557506001600160a01b03861615155b61056e57600080fd5b6105b460405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060048152602001634d4f564560e01b815250610bae565b6105f760405180604001604052806008815260200167135bdd995b595b9d60c21b815250604051806040016040528060018152602001603160f81b815250610bc4565b610602600088610a83565b50610627866106136008600a6116b4565b610622906402540be4006116c3565b610c25565b831561066d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6000806000805160206118208339815191525b6001600160a01b0390931660009081526020939093525050604090205490565b600061031682610c5b565b6000606080828080838160008051602061184083398151915280549091501580156106e157506001810154155b61072a5760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064015b60405180910390fd5b610732610c84565b61073a610cc3565b60408051600080825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b6000918252600080516020611860833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace048054606091600080516020611820833981519152916103419061157d565b6000336103d3818585610a17565b8342111561080e5760405163313c898160e11b815260048101859052602401610721565b60007f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861087a8c6001600160a01b031660009081527f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb006020526040902080546001810190915590565b6040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108d582610cdb565b905060006108e582878787610d08565b9050896001600160a01b0316816001600160a01b03161461092c576040516325c0072360e11b81526001600160a01b0380831660048301528b166024820152604401610721565b6109378a8a8a6109a9565b50505050505050505050565b61094c82610401565b61095581610a76565b61043f8383610b32565b6001600160a01b0391821660009081527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace016020908152604080832093909416825291909152205490565b6104878383836001610d36565b60006109c2848461095f565b905060001981101561043f5781811015610a0857604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610721565b61043f84848484036000610d36565b6001600160a01b038316610a4157604051634b637e8f60e11b815260006004820152602401610721565b6001600160a01b038216610a6b5760405163ec442f0560e01b815260006004820152602401610721565b610487838383610e1e565b610a808133610f5c565b50565b6000600080516020611860833981519152610a9e8484610765565b610b1e576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055610ad43390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610316565b6000915050610316565b600061044f610f95565b6000600080516020611860833981519152610b4d8484610765565b15610b1e576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610316565b610bb6611009565b610bc08282611054565b5050565b610bcc611009565b6000805160206118408339815191527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102610c068482611737565b5060038101610c158382611737565b5060008082556001909101555050565b6001600160a01b038216610c4f5760405163ec442f0560e01b815260006004820152602401610721565b610bc060008383610e1e565b6000807f5ab42ced628888259c08ac98db1eb0cf702fc1501344311d8b100cd1bfe4bb00610689565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1028054606091600080516020611840833981519152916103419061157d565b60606000600080516020611840833981519152610330565b6000610316610ce8610b28565b8360405161190160f01b8152600281019290925260228201526042902090565b600080600080610d1a888888886110a5565b925092509250610d2a8282611174565b50909695505050505050565b6000805160206118208339815191526001600160a01b038516610d6f5760405163e602df0560e01b815260006004820152602401610721565b6001600160a01b038416610d9957604051634a1406b160e11b815260006004820152602401610721565b6001600160a01b03808616600090815260018301602090815260408083209388168352929052208390558115610e1757836001600160a01b0316856001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92585604051610e0e91815260200190565b60405180910390a35b5050505050565b6000805160206118208339815191526001600160a01b038416610e5a5781816002016000828254610e4f91906117f6565b90915550610ecc9050565b6001600160a01b03841660009081526020829052604090205482811015610ead5760405163391434e360e21b81526001600160a01b03861660048201526024810182905260448101849052606401610721565b6001600160a01b03851660009081526020839052604090209083900390555b6001600160a01b038316610eea576002810180548390039055610f09565b6001600160a01b03831660009081526020829052604090208054830190555b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610f4e91815260200190565b60405180910390a350505050565b610f668282610765565b610bc05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610721565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610fc061122d565b610fc8611297565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661105257604051631afcd79f60e31b815260040160405180910390fd5b565b61105c611009565b6000805160206118208339815191527f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace036110968482611737565b506004810161043f8382611737565b600080807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411156110e0575060009150600390508261116a565b604080516000808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611134573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111605750600092506001915082905061116a565b9250600091508190505b9450945094915050565b600082600381111561118857611188611809565b03611191575050565b60018260038111156111a5576111a5611809565b036111c35760405163f645eedf60e01b815260040160405180910390fd5b60028260038111156111d7576111d7611809565b036111f85760405163fce698f760e01b815260048101829052602401610721565b600382600381111561120c5761120c611809565b03610bc0576040516335e2f38360e21b815260048101829052602401610721565b600060008051602061184083398151915281611247610c84565b80519091501561125f57805160209091012092915050565b8154801561126e579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b6000600080516020611840833981519152816112b1610cc3565b8051909150156112c957805160209091012092915050565b6001820154801561126e579392505050565b6000602082840312156112ed57600080fd5b81356001600160e01b03198116811461130557600080fd5b9392505050565b6000815180845260005b8181101561133257602081850181015186830182015201611316565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611305602083018461130c565b80356001600160a01b038116811461137c57600080fd5b919050565b6000806040838503121561139457600080fd5b61139d83611365565b946020939093013593505050565b6000806000606084860312156113c057600080fd5b6113c984611365565b92506113d760208501611365565b929592945050506040919091013590565b6000602082840312156113fa57600080fd5b5035919050565b6000806040838503121561141457600080fd5b8235915061142460208401611365565b90509250929050565b6000806040838503121561144057600080fd5b61144983611365565b915061142460208401611365565b60006020828403121561146957600080fd5b61130582611365565b60ff60f81b8816815260e06020820152600061149160e083018961130c565b82810360408401526114a3818961130c565b606084018890526001600160a01b038716608085015260a0840186905283810360c08501528451808252602080870193509091019060005b818110156114f95783518352602093840193909201916001016114db565b50909b9a5050505050505050505050565b600080600080600080600060e0888a03121561152557600080fd5b61152e88611365565b965061153c60208901611365565b95506040880135945060608801359350608088013560ff8116811461156057600080fd5b9699959850939692959460a0840135945060c09093013592915050565b600181811c9082168061159157607f821691505b6020821081036115b157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001815b6001841115611608578085048111156115ec576115ec6115b7565b60018416156115fa57908102905b60019390931c9280026115d1565b935093915050565b60008261161f57506001610316565b8161162c57506000610316565b8160018114611642576002811461164c57611668565b6001915050610316565b60ff84111561165d5761165d6115b7565b50506001821b610316565b5060208310610133831016604e8410600b841016171561168b575081810a610316565b61169860001984846115cd565b80600019048211156116ac576116ac6115b7565b029392505050565b600061130560ff841683611610565b8082028115828204841417610316576103166115b7565b634e487b7160e01b600052604160045260246000fd5b601f82111561048757806000526020600020601f840160051c810160208510156117175750805b601f840160051c820191505b81811015610e175760008155600101611723565b815167ffffffffffffffff811115611751576117516116da565b6117658161175f845461157d565b846116f0565b6020601f82116001811461179957600083156117815750848201515b600019600385901b1c1916600184901b178455610e17565b600084815260208120601f198516915b828110156117c957878501518255602094850194600190920191016117a9565b50848210156117e75786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b80820180821115610316576103166115b7565b634e487b7160e01b600052602160045260246000fdfe52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00a16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220822098eb798f70ac2f6fae171eff621feb95512c5191ff1d1bbbc580d438357264736f6c634300081a0033","sourceMap":"299:1259:115:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;2716:144:22;;;:::i;:::-;;;;;;;:::i;5210:186::-;;;;;;:::i;:::-;;:::i;3896:152::-;4027:14;;3896:152;;;1756:25:140;;;1744:2;1729:18;3896:152:22;1610:177:140;5988:244:22;;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;:::i;:::-;;:::i;5246:136::-;;;;;;:::i;:::-;;:::i;:::-;;1474:82:115;;;1548:1;3031:36:140;;3019:2;3004:18;1474:82:115;2889:184:140;3085:112:23;;;:::i;6348:245:19:-;;;;;;:::i;:::-;;:::i;981:342:115:-;;;;;;:::i;:::-;;:::i;4106:171:22:-;;;;;;:::i;:::-;;:::i;2824:154:23:-;;;;;;:::i;:::-;;:::i;5173:903:26:-;;;:::i;:::-;;;;;;;;;;;;;:::i;3732:207:19:-;;;;;;:::i;:::-;;:::i;2973:148:22:-;;;:::i;2317:49:19:-;;2362:4;2317:49;;4472:178:22;;;;;;:::i;:::-;;:::i;2098:672:23:-;;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;:::i;:::-;;:::i;4708:195:22:-;;;;;;:::i;:::-;;:::i;3443:202:19:-;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;2716:144:22:-;2761:13;2786:22;-1:-1:-1;;;;;;;;;;;2811:18:22;2786:43;;2846:1;:7;;2839:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2716:144;:::o;5210:186::-;5283:4;966:10:24;5337:31:22;966:10:24;5353:7:22;5362:5;5337:8;:31::i;:::-;-1:-1:-1;5385:4:22;;5210:186;-1:-1:-1;;;5210:186:22:o;5988:244::-;6075:4;966:10:24;6131:37:22;6147:4;966:10:24;6162:5:22;6131:15;:37::i;:::-;6178:26;6188:4;6194:2;6198:5;6178:9;:26::i;:::-;-1:-1:-1;6221:4:22;;5988:244;-1:-1:-1;;;;5988:244:22:o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;5246:136::-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;3085:112:23:-;3144:7;3170:20;:18;:20::i;:::-;3163:27;;3085:112;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;981:342:115:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;-1:-1:-1;;;;;1072:20:115;::::1;::::0;;::::1;::::0;:46:::1;;-1:-1:-1::0;;;;;;1096:22:115;::::1;::::0;::::1;1072:46;1064:55;;;::::0;::::1;;1129:32;;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1129:32:115::1;;::::0;:12:::1;:32::i;:::-;1171:40;;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;::::1;;;;;;;;;;;;;-1:-1:-1::0;;;1171:40:115::1;;::::0;:23:::1;:40::i;:::-;1221:38;2362:4:19;1252:6:115::0;1221:10:::1;:38::i;:::-;-1:-1:-1::0;1269:47:115::1;1275:8:::0;1299:16:::1;1548:1:::0;1299:2:::1;:16;:::i;:::-;1285:30;::::0;:11:::1;:30;:::i;:::-;1269:5;:47::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;7960:50:140;;5142:14:20;;7948:2:140;7933:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;981:342:115;;:::o;4106:171:22:-;4171:7;;-1:-1:-1;;;;;;;;;;;4215:18:22;-1:-1:-1;;;;;4250:20:22;;;:11;:20;;;;;;;;-1:-1:-1;;4250:20:22;;;;;4106:171::o;2824:154:23:-;2926:7;2952:19;2965:5;2952:12;:19::i;5173:903:26:-;5271:13;5298:18;;5271:13;;;5298:18;5271:13;-1:-1:-1;;;;;;;;;;;5777:13:26;;5511:45;;-1:-1:-1;5777:18:26;:43;;;;-1:-1:-1;5799:16:26;;;;:21;5777:43;5769:77;;;;-1:-1:-1;;;5769:77:26;;8223:2:140;5769:77:26;;;8205:21:140;8262:2;8242:18;;;8235:30;-1:-1:-1;;;8281:18:140;;;8274:51;8342:18;;5769:77:26;;;;;;;;;5908:13;:11;:13::i;:::-;5935:16;:14;:16::i;:::-;6043;;;6027:1;6043:16;;;;;;;;;-1:-1:-1;;;5857:212:26;;;-1:-1:-1;5857:212:26;;-1:-1:-1;5965:13:26;;-1:-1:-1;6000:4:26;;-1:-1:-1;6027:1:26;-1:-1:-1;6043:16:26;-1:-1:-1;5857:212:26;-1:-1:-1;;5173:903:26:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;2973:148:22:-;3105:9;3098:16;;3020:13;;-1:-1:-1;;;;;;;;;;;2064:20:22;3098:16;;;:::i;4472:178::-;4541:4;966:10:24;4595:27:22;966:10:24;4612:2:22;4616:5;4595:9;:27::i;2098:672:23:-;2319:8;2301:15;:26;2297:97;;;2350:33;;-1:-1:-1;;;2350:33:23;;;;;1756:25:140;;;1729:18;;2350:33:23;1610:177:140;2297:97:23;2404:18;1279:95;2463:5;2470:7;2479:5;2486:16;2496:5;-1:-1:-1;;;;;1954:16:25;1597:7;1954:16;;;1005:21;1954:16;;;;;:18;;;;;;;;;1537:452;2486:16:23;2435:78;;;;;;8790:25:140;;;;-1:-1:-1;;;;;8851:32:140;;;8831:18;;;8824:60;8920:32;;;;8900:18;;;8893:60;8969:18;;;8962:34;9012:19;;;9005:35;9056:19;;;9049:35;;;8762:19;;2435:78:23;;;;;;;;;;;;2425:89;;;;;;2404:110;;2525:12;2540:28;2557:10;2540:16;:28::i;:::-;2525:43;;2579:14;2596:28;2610:4;2616:1;2619;2622;2596:13;:28::i;:::-;2579:45;;2648:5;-1:-1:-1;;;;;2638:15:23;:6;-1:-1:-1;;;;;2638:15:23;;2634:88;;2676:35;;-1:-1:-1;;;2676:35:23;;-1:-1:-1;;;;;9287:32:140;;;2676:35:23;;;9269:51:140;9356:32;;9336:18;;;9329:60;9242:18;;2676:35:23;9095:300:140;2634:88:23;2732:31;2741:5;2748:7;2757:5;2732:8;:31::i;:::-;2287:483;;;2098:672;;;;;;;:::o;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;4708:195:22:-:0;-1:-1:-1;;;;;4867:20:22;;;4788:7;4867:20;;;:13;:20;;;;;;;;:29;;;;;;;;;;;;;4708:195::o;10001:128::-;10085:37;10094:5;10101:7;10110:5;10117:4;10085:8;:37::i;11745:476::-;11844:24;11871:25;11881:5;11888:7;11871:9;:25::i;:::-;11844:52;;-1:-1:-1;;11910:16:22;:36;11906:309;;;11985:5;11966:16;:24;11962:130;;;12017:60;;-1:-1:-1;;;12017:60:22;;-1:-1:-1;;;;;9620:32:140;;12017:60:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;12017:60:22;9400:345:140;11962:130:22;12133:57;12142:5;12149:7;12177:5;12158:16;:24;12184:5;12133:8;:57::i;6605:300::-;-1:-1:-1;;;;;6688:18:22;;6684:86;;6729:30;;-1:-1:-1;;;6729:30:22;;6756:1;6729:30;;;9896:51:140;9869:18;;6729:30:22;9750:203:140;6684:86:22;-1:-1:-1;;;;;6783:16:22;;6779:86;;6822:32;;-1:-1:-1;;;6822:32:22;;6851:1;6822:32;;;9896:51:140;9869:18;;6822:32:22;9750:203:140;6779:86:22;6874:24;6882:4;6888:2;6892:5;6874:7;:24::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;4015:109:26;4068:7;4094:23;:21;:23::i;7892:388:19:-;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2282:147:22;6931:20:20;:18;:20::i;:::-;2384:38:22::1;2407:5;2414:7;2384:22;:38::i;:::-;2282:147:::0;;:::o;3599:330:26:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;3766:7:26;:14:::1;3776:4:::0;3766:7;:14:::1;:::i;:::-;-1:-1:-1::0;3790:10:26::1;::::0;::::1;:20;3803:7:::0;3790:10;:20:::1;:::i;:::-;-1:-1:-1::0;3891:1:26::1;3875:17:::0;;;3902:16:::1;::::0;;::::1;:20:::0;-1:-1:-1;;3599:330:26:o;8733:208:22:-;-1:-1:-1;;;;;8803:21:22;;8799:91;;8847:32;;-1:-1:-1;;;8847:32:22;;8876:1;8847:32;;;9896:51:140;9869:18;;8847:32:22;9750:203:140;8799:91:22;8899:35;8915:1;8919:7;8928:5;8899:7;:35::i;1259:164:25:-;1319:7;;1005:21;1364:19;886:156;6300:155:26;6441:7;6434:14;;6354:13;;-1:-1:-1;;;;;;;;;;;2839:21:26;6434:14;;;:::i;6682:161::-;6739:13;6764:23;-1:-1:-1;;;;;;;;;;;6790:19:26;2720:156;4946:176;5023:7;5049:66;5082:20;:18;:20::i;:::-;5104:10;3501:4:61;3495:11;-1:-1:-1;;;3519:23:61;;3571:4;3562:14;;3555:39;;;;3623:4;3614:14;;3607:34;3679:4;3664:20;;;3326:374;6887:260:60;6972:7;6992:17;7011:18;7031:16;7051:25;7062:4;7068:1;7071;7074;7051:10;:25::i;:::-;6991:85;;;;;;7086:28;7098:5;7105:8;7086:11;:28::i;:::-;-1:-1:-1;7131:9:60;;6887:260;-1:-1:-1;;;;;;6887:260:60:o;10976:487:22:-;-1:-1:-1;;;;;;;;;;;;;;;;11141:19:22;;11137:89;;11183:32;;-1:-1:-1;;;11183:32:22;;11212:1;11183:32;;;9896:51:140;9869:18;;11183:32:22;9750:203:140;11137:89:22;-1:-1:-1;;;;;11239:21:22;;11235:90;;11283:31;;-1:-1:-1;;;11283:31:22;;11311:1;11283:31;;;9896:51:140;9869:18;;11283:31:22;9750:203:140;11235:90:22;-1:-1:-1;;;;;11334:20:22;;;;;;;:13;;;:20;;;;;;;;:29;;;;;;;;;:37;;;11381:76;;;;11431:7;-1:-1:-1;;;;;11415:31:22;11424:5;-1:-1:-1;;;;;11415:31:22;;11440:5;11415:31;;;;1756:25:140;;1744:2;1729:18;;1610:177;11415:31:22;;;;;;;;11381:76;11074:389;10976:487;;;;:::o;7220:1170::-;-1:-1:-1;;;;;;;;;;;;;;;;7362:18:22;;7358:546;;7516:5;7498:1;:14;;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;7358:546:22;;-1:-1:-1;7358:546:22;;-1:-1:-1;;;;;7574:17:22;;7552:19;7574:17;;;;;;;;;;;7609:19;;;7605:115;;;7655:50;;-1:-1:-1;;;7655:50:22;;-1:-1:-1;;;;;9620:32:140;;7655:50:22;;;9602:51:140;9669:18;;;9662:34;;;9712:18;;;9705:34;;;9575:18;;7655:50:22;9400:345:140;7605:115:22;-1:-1:-1;;;;;7840:17:22;;:11;:17;;;;;;;;;;7860:19;;;;7840:39;;7358:546;-1:-1:-1;;;;;7918:16:22;;7914:429;;8081:14;;;:23;;;;;;;7914:429;;;-1:-1:-1;;;;;8294:15:22;;:11;:15;;;;;;;;;;:24;;;;;;7914:429;8373:2;-1:-1:-1;;;;;8358:25:22;8367:4;-1:-1:-1;;;;;8358:25:22;;8377:5;8358:25;;;;1756::140;;1744:2;1729:18;;1610:177;8358:25:22;;;;;;;;7295:1095;7220:1170;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;12404:32:140;;4514:47:19;;;12386:51:140;12453:18;;;12446:34;;;12359:18;;4514:47:19;12212:274:140;4130:191:26;4185:7;2073:95;4243:17;:15;:17::i;:::-;4262:20;:18;:20::i;:::-;4221:92;;;;;;12750:25:140;;;;12791:18;;12784:34;;;;12834:18;;;12827:34;4284:13:26;12877:18:140;;;12870:34;4307:4:26;12920:19:140;;;12913:61;12722:19;;4221:92:26;;;;;;;;;;;;4211:103;;;;;;4204:110;;4130:191;:::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;7146:73;7084:141::o;2435:216:22:-;6931:20:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;2600:7:22;:15:::1;2610:5:::0;2600:7;:15:::1;:::i;:::-;-1:-1:-1::0;2625:9:22::1;::::0;::::1;:19;2637:7:::0;2625:9;:19:::1;:::i;5203:1551:60:-:0;5329:17;;;6283:66;6270:79;;6266:164;;;-1:-1:-1;6381:1:60;;-1:-1:-1;6385:30:60;;-1:-1:-1;6417:1:60;6365:54;;6266:164;6541:24;;;6524:14;6541:24;;;;;;;;;13212:25:140;;;13285:4;13273:17;;13253:18;;;13246:45;;;;13307:18;;;13300:34;;;13350:18;;;13343:34;;;6541:24:60;;13184:19:140;;6541:24:60;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6541:24:60;;-1:-1:-1;;6541:24:60;;;-1:-1:-1;;;;;;;6579:20:60;;6575:113;;-1:-1:-1;6631:1:60;;-1:-1:-1;6635:29:60;;-1:-1:-1;6631:1:60;;-1:-1:-1;6615:62:60;;6575:113;6706:6;-1:-1:-1;6714:20:60;;-1:-1:-1;6714:20:60;;-1:-1:-1;5203:1551:60;;;;;;;;;:::o;7280:532::-;7375:20;7366:5;:29;;;;;;;;:::i;:::-;;7362:444;;7280:532;;:::o;7362:444::-;7471:29;7462:5;:38;;;;;;;;:::i;:::-;;7458:348;;7523:23;;-1:-1:-1;;;7523:23:60;;;;;;;;;;;7458:348;7576:35;7567:5;:44;;;;;;;;:::i;:::-;;7563:243;;7634:46;;-1:-1:-1;;;7634:46:60;;;;;1756:25:140;;;1729:18;;7634:46:60;1610:177:140;7563:243:60;7710:30;7701:5;:39;;;;;;;;:::i;:::-;;7697:109;;7763:32;;-1:-1:-1;;;7763:32:60;;;;;1756:25:140;;;1729:18;;7763:32:60;1610:177:140;7058:687:26;7108:7;-1:-1:-1;;;;;;;;;;;7108:7:26;7203:13;:11;:13::i;:::-;7230:18;;7182:34;;-1:-1:-1;7230:22:26;7226:513;;7275:22;;;;;;;;7058:687;-1:-1:-1;;7058:687:26:o;7226:513::-;7572:13;;7603:15;;7599:130;;7645:10;7058:687;-1:-1:-1;;;7058:687:26:o;7599:130::-;7701:13;7694:20;;;;;7058:687;:::o;7966:723::-;8019:7;-1:-1:-1;;;;;;;;;;;8019:7:26;8117:16;:14;:16::i;:::-;8147:21;;8093:40;;-1:-1:-1;8147:25:26;8143:540;;8195:25;;;;;;;;7966:723;-1:-1:-1;;7966:723:26:o;8143:540::-;8507:16;;;;8541:18;;8537:136;;8586:13;7966:723;-1:-1:-1;;;7966:723:26:o;14:286:140:-;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;199:71;289:5;14:286;-1:-1:-1;;;14:286:140:o;497:400::-;539:3;577:5;571:12;604:6;599:3;592:19;629:1;639:139;653:6;650:1;647:13;639:139;;;761:4;746:13;;;742:24;;736:31;716:11;;;712:22;;705:63;668:12;639:139;;;643:3;823:1;816:4;807:6;802:3;798:16;794:27;787:38;886:4;879:2;875:7;870:2;862:6;858:15;854:29;849:3;845:39;841:50;834:57;;;497:400;;;;:::o;902:220::-;1051:2;1040:9;1033:21;1014:4;1071:45;1112:2;1101:9;1097:18;1089:6;1071:45;:::i;1127:173::-;1195:20;;-1:-1:-1;;;;;1244:31:140;;1234:42;;1224:70;;1290:1;1287;1280:12;1224:70;1127:173;;;:::o;1305:300::-;1373:6;1381;1434:2;1422:9;1413:7;1409:23;1405:32;1402:52;;;1450:1;1447;1440:12;1402:52;1473:29;1492:9;1473:29;:::i;:::-;1463:39;1571:2;1556:18;;;;1543:32;;-1:-1:-1;;;1305:300:140:o;1792:374::-;1869:6;1877;1885;1938:2;1926:9;1917:7;1913:23;1909:32;1906:52;;;1954:1;1951;1944:12;1906:52;1977:29;1996:9;1977:29;:::i;:::-;1967:39;;2025:38;2059:2;2048:9;2044:18;2025:38;:::i;:::-;1792:374;;2015:48;;-1:-1:-1;;;2132:2:140;2117:18;;;;2104:32;;1792:374::o;2171:226::-;2230:6;2283:2;2271:9;2262:7;2258:23;2254:32;2251:52;;;2299:1;2296;2289:12;2251:52;-1:-1:-1;2344:23:140;;2171:226;-1:-1:-1;2171:226:140:o;2584:300::-;2652:6;2660;2713:2;2701:9;2692:7;2688:23;2684:32;2681:52;;;2729:1;2726;2719:12;2681:52;2774:23;;;-1:-1:-1;2840:38:140;2874:2;2859:18;;2840:38;:::i;:::-;2830:48;;2584:300;;;;;:::o;3078:260::-;3146:6;3154;3207:2;3195:9;3186:7;3182:23;3178:32;3175:52;;;3223:1;3220;3213:12;3175:52;3246:29;3265:9;3246:29;:::i;:::-;3236:39;;3294:38;3328:2;3317:9;3313:18;3294:38;:::i;3343:186::-;3402:6;3455:2;3443:9;3434:7;3430:23;3426:32;3423:52;;;3471:1;3468;3461:12;3423:52;3494:29;3513:9;3494:29;:::i;3534:1238::-;3940:3;3935;3931:13;3923:6;3919:26;3908:9;3901:45;3982:3;3977:2;3966:9;3962:18;3955:31;3882:4;4009:46;4050:3;4039:9;4035:19;4027:6;4009:46;:::i;:::-;4103:9;4095:6;4091:22;4086:2;4075:9;4071:18;4064:50;4137:33;4163:6;4155;4137:33;:::i;:::-;4201:2;4186:18;;4179:34;;;-1:-1:-1;;;;;4250:32:140;;4244:3;4229:19;;4222:61;4270:3;4299:19;;4292:35;;;4364:22;;;4358:3;4343:19;;4336:51;4436:13;;4458:22;;;4508:2;4534:15;;;;-1:-1:-1;4496:15:140;;;;-1:-1:-1;4577:169:140;4591:6;4588:1;4585:13;4577:169;;;4652:13;;4640:26;;4695:2;4721:15;;;;4686:12;;;;4613:1;4606:9;4577:169;;;-1:-1:-1;4763:3:140;;3534:1238;-1:-1:-1;;;;;;;;;;;3534:1238:140:o;4777:903::-;4888:6;4896;4904;4912;4920;4928;4936;4989:3;4977:9;4968:7;4964:23;4960:33;4957:53;;;5006:1;5003;4996:12;4957:53;5029:29;5048:9;5029:29;:::i;:::-;5019:39;;5077:38;5111:2;5100:9;5096:18;5077:38;:::i;:::-;5067:48;-1:-1:-1;5184:2:140;5169:18;;5156:32;;-1:-1:-1;5285:2:140;5270:18;;5257:32;;-1:-1:-1;5367:3:140;5352:19;;5339:33;5416:4;5403:18;;5391:31;;5381:59;;5436:1;5433;5426:12;5381:59;4777:903;;;;-1:-1:-1;4777:903:140;;;;5459:7;5539:3;5524:19;;5511:33;;-1:-1:-1;5643:3:140;5628:19;;;5615:33;;4777:903;-1:-1:-1;;4777:903:140:o;5685:380::-;5764:1;5760:12;;;;5807;;;5828:61;;5882:4;5874:6;5870:17;5860:27;;5828:61;5935:2;5927:6;5924:14;5904:18;5901:38;5898:161;;5981:10;5976:3;5972:20;5969:1;5962:31;6016:4;6013:1;6006:15;6044:4;6041:1;6034:15;5898:161;;5685:380;;;:::o;6070:127::-;6131:10;6126:3;6122:20;6119:1;6112:31;6162:4;6159:1;6152:15;6186:4;6183:1;6176:15;6202:375;6290:1;6308:5;6322:249;6343:1;6333:8;6330:15;6322:249;;;6393:4;6388:3;6384:14;6378:4;6375:24;6372:50;;;6402:18;;:::i;:::-;6452:1;6442:8;6438:16;6435:49;;;6466:16;;;;6435:49;6549:1;6545:16;;;;;6505:15;;6322:249;;;6202:375;;;;;;:::o;6582:902::-;6631:5;6661:8;6651:80;;-1:-1:-1;6702:1:140;6716:5;;6651:80;6750:4;6740:76;;-1:-1:-1;6787:1:140;6801:5;;6740:76;6832:4;6850:1;6845:59;;;;6918:1;6913:174;;;;6825:262;;6845:59;6875:1;6866:10;;6889:5;;;6913:174;6950:3;6940:8;6937:17;6934:43;;;6957:18;;:::i;:::-;-1:-1:-1;;7013:1:140;6999:16;;7072:5;;6825:262;;7171:2;7161:8;7158:16;7152:3;7146:4;7143:13;7139:36;7133:2;7123:8;7120:16;7115:2;7109:4;7106:12;7102:35;7099:77;7096:203;;;-1:-1:-1;7208:19:140;;;7284:5;;7096:203;7331:42;-1:-1:-1;;7356:8:140;7350:4;7331:42;:::i;:::-;7409:6;7405:1;7401:6;7397:19;7388:7;7385:32;7382:58;;;7420:18;;:::i;:::-;7458:20;;6582:902;-1:-1:-1;;;6582:902:140:o;7489:140::-;7547:5;7576:47;7617:4;7607:8;7603:19;7597:4;7576:47;:::i;7634:168::-;7707:9;;;7738;;7755:15;;;7749:22;;7735:37;7725:71;;7776:18;;:::i;8371:127::-;8432:10;8427:3;8423:20;8420:1;8413:31;8463:4;8460:1;8453:15;8487:4;8484:1;8477:15;10084:518;10186:2;10181:3;10178:11;10175:421;;;10222:5;10219:1;10212:16;10266:4;10263:1;10253:18;10336:2;10324:10;10320:19;10317:1;10313:27;10307:4;10303:38;10372:4;10360:10;10357:20;10354:47;;;-1:-1:-1;10395:4:140;10354:47;10450:2;10445:3;10441:12;10438:1;10434:20;10428:4;10424:31;10414:41;;10505:81;10523:2;10516:5;10513:13;10505:81;;;10582:1;10568:16;;10549:1;10538:13;10505:81;;10778:1299;10904:3;10898:10;10931:18;10923:6;10920:30;10917:56;;;10953:18;;:::i;:::-;10982:97;11072:6;11032:38;11064:4;11058:11;11032:38;:::i;:::-;11026:4;10982:97;:::i;:::-;11128:4;11159:2;11148:14;;11176:1;11171:649;;;;11864:1;11881:6;11878:89;;;-1:-1:-1;11933:19:140;;;11927:26;11878:89;-1:-1:-1;;10735:1:140;10731:11;;;10727:24;10723:29;10713:40;10759:1;10755:11;;;10710:57;11980:81;;11141:930;;11171:649;10031:1;10024:14;;;10068:4;10055:18;;-1:-1:-1;;11207:20:140;;;11325:222;11339:7;11336:1;11333:14;11325:222;;;11421:19;;;11415:26;11400:42;;11528:4;11513:20;;;;11481:1;11469:14;;;;11355:12;11325:222;;;11329:3;11575:6;11566:7;11563:19;11560:201;;;11636:19;;;11630:26;-1:-1:-1;;11719:1:140;11715:14;;;11731:3;11711:24;11707:37;11703:42;11688:58;11673:74;;11560:201;-1:-1:-1;;;;11807:1:140;11791:14;;;11787:22;11774:36;;-1:-1:-1;10778:1299:140:o;12082:125::-;12147:9;;;12168:10;;;12165:36;;;12181:18;;:::i;13388:127::-;13449:10;13444:3;13440:20;13437:1;13430:31;13480:4;13477:1;13470:15;13504:4;13501:1;13494:15","linkReferences":{}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","DOMAIN_SEPARATOR()":"3644e515","allowance(address,address)":"dd62ed3e","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","decimals()":"313ce567","eip712Domain()":"84b0196e","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize(address,address)":"485cc955","name()":"06fdde03","nonces(address)":"7ecebe00","permit(address,address,uint256,uint256,uint8,bytes32,bytes32)":"d505accf","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","totalSupply()":"18160ddd","transfer(address,uint256)":"a9059cbb","transferFrom(address,address,uint256)":"23b872dd"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"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\":\"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\":[{\"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\"},{\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"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\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"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\":[],\"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\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_custody\",\"type\":\"address\"}],\"name\":\"initialize\",\"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\":[{\"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\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"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\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"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.\"}],\"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.\"}]},\"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.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"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\":\"See {IERC20-allowance}.\"},\"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\":\"See {IERC20-balanceOf}.\"},\"constructor\":{\"details\":\"Disables potential implementation exploit\"},\"decimals()\":{\"details\":\"Returns the number of decimals\"},\"eip712Domain()\":{\"details\":\"See {IERC-5267}.\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize(address,address)\":{\"details\":\"Initializes the contract with initial parameters.\",\"params\":{\"_custody\":\"The address of the custody account.\",\"_owner\":\"The address of the owner who receives default admin role.\"}},\"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.\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"symbol()\":{\"details\":\"Returns the symbol of the token, usually a shorter version of the name.\"},\"totalSupply()\":{\"details\":\"See {IERC20-totalSupply}.\"},\"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`.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"decimals()\":{\"notice\":\"decimals is set to 8, following the Movement network standard decimals\"},\"initialize(address,address)\":{\"notice\":\"The ERC20 token is named \\\"Movement\\\" with symbol \\\"MOVE\\\".EIP712 domain version is set to \\\"1\\\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/token/MOVEToken.sol\":\"MOVEToken\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol\":{\"keccak256\":\"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118\",\"dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63\"]},\"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\":\"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33\",\"dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol\":{\"keccak256\":\"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3\",\"dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG\"]},\"lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251\",\"dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d\"]},\"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\":\"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e\",\"dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"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/token/MOVEToken.sol\":{\"keccak256\":\"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a\",\"dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"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":"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":[{"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","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":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","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":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"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":[],"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":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"address","name":"_custody","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"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":[{"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":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"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"}]}],"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":"See {IERC20-allowance}."},"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":"See {IERC20-balanceOf}."},"constructor":{"details":"Disables potential implementation exploit"},"decimals()":{"details":"Returns the number of decimals"},"eip712Domain()":{"details":"See {IERC-5267}."},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize(address,address)":{"details":"Initializes the contract with initial parameters.","params":{"_custody":"The address of the custody account.","_owner":"The address of the owner who receives default admin role."}},"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."},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"symbol()":{"details":"Returns the symbol of the token, usually a shorter version of the name."},"totalSupply()":{"details":"See {IERC20-totalSupply}."},"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`."}},"version":1},"userdoc":{"kind":"user","methods":{"decimals()":{"notice":"decimals is set to 8, following the Movement network standard decimals"},"initialize(address,address)":{"notice":"The ERC20 token is named \"Movement\" with symbol \"MOVE\".EIP712 domain version is set to \"1\" for signatures.The owner is granted the `DEFAULT_ADMIN_ROLE`.10 billion MOVE tokens are minted to the owner's address."}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/token/MOVEToken.sol":"MOVEToken"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/extensions/ERC20PermitUpgradeable.sol":{"keccak256":"0x4c6100a8ab53ef249c937067f7d9779ee0966fb55b39903628c169428fdeee76","urls":["bzz-raw://2b96738706660e46a7d77d13e14191d658b87720e2000a52c02890505183c118","dweb:/ipfs/QmRUjhpmBAEmVEqD4L5LznnDR9gQdgXg17kZExC9N55Q63"],"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":"0x7a618cd9a1eea21201ec2ed8484080ca6225215e8883723bef34b9dcf22aa3b5","urls":["bzz-raw://287a73451277e35206f1f8b9f20b2cd41732081bd23523f5a2c64e1e67694c33","dweb:/ipfs/QmdPVK7KACRpoavNUoixGsi8jBWeZUJfNYCzZbHGSGz5yu"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol":{"keccak256":"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92","urls":["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a","dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol":{"keccak256":"0x27dbc90e5136ffe46c04f7596fc2dbcc3acebd8d504da3d93fdb8496e6de04f6","urls":["bzz-raw://0ea8b92e4245d75a5579c10f22f118f7b4ba07c57341f181f0b2a85ff8663de3","dweb:/ipfs/Qme3Ss5ByjmkxxkMdLpyu7fQ1PCtjNFH1wEFszt2BZePiG"],"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/Strings.sol":{"keccak256":"0x44f87e91783e88415bde66f1a63f6c7f0076f2d511548820407d5c95643ac56c","urls":["bzz-raw://13a51bc2b23827744dcf5bad10c69e72528cf015a6fe48c93632cdb2c0eb1251","dweb:/ipfs/QmZwPA47Yqgje1qtkdEFEja8ntTahMStYzKf5q3JRnaR7d"],"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":"0x4515543bc4c78561f6bea83ecfdfc3dead55bd59858287d682045b11de1ae575","urls":["bzz-raw://60601f91440125727244fffd2ba84da7caafecaae0fd887c7ccfec678e02b61e","dweb:/ipfs/QmZnKPBtVDiQS9Dp8gZ4sa3ZeTrWVfqF7yuUd6Y8hwm1Rs"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/token/MOVEToken.sol":{"keccak256":"0x907babd7e2db7867a9401ab8edcecd579ad7db099ae4693a27e052887d91eb22","urls":["bzz-raw://a87e3b44d5e5409f0695ca2057be132b02b12a6cfa3d95a1a69382458e16b20a","dweb:/ipfs/QmPNA8kiRGr3jR4ngz8UeKLUM7QitN4J5xNbxxWYNncV9H"],"license":"MIT"}},"version":1},"id":115} diff --git a/protocol/pcp/clients/eth/abis/MovementStaking.json b/protocol/pcp/clients/eth/abis/MovementStaking.json index bc40bdb5..f3fadba9 100644 --- a/protocol/pcp/clients/eth/abis/MovementStaking.json +++ b/protocol/pcp/clients/eth/abis/MovementStaking.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","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":"WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeAllStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentAcceptingEpochByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"currentAcceptingEpoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"domainGenesisAccepted","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochDurationByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochByL1BlockTime","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextPresentEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredAttesters","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredCustodians","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getUnstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnstakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerDomain","inputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAddressFromWhitelist","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardArray","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardFromDomain","inputs":[{"name":"attester","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollOverEpoch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"custodians","type":"address[]","internalType":"address[]"},{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"refundAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakesByDomainEpochCustodian","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"unstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unstakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"whitelistAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AttesterEpochRolledOver","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterStaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterUnstaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EpochRolledOver","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CustodianTransferAmountMismatch","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EpochDurationNotSet","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisAlreadyAccepted","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"StakeExceedsGenesisStake","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b5060016009556080516132f161004260003960008181611f2801528181611f51015261209501526132f16000f3fe6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;1171:4:21;1128:48;;766:27108:111;;;;;;;;;-1:-1:-1;1857:1:57;2061:7;:21;766:27108:111;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;1474:208:112;;;;;;;;;;-1:-1:-1;1474:208:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1434:25:140;;;1422:2;1407:18;1474:208:112;1288:177:140;10872:215:111;;;;;;;;;;-1:-1:-1;10872:215:111;;;;;:::i;:::-;;:::i;2321:419::-;;;;;;;;;;-1:-1:-1;2321:419:111;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4287:406::-;;;;;;;;;;-1:-1:-1;4287:406:111;;;;;:::i;:::-;;:::i;:::-;;8307:134;;;;;;;;;;-1:-1:-1;8307:134:111;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;11409:381:111:-;;;;;;;;;;-1:-1:-1;11409:381:111;;;;;:::i;:::-;;:::i;26739:151::-;;;;;;;;;;-1:-1:-1;26739:151:111;;;;;:::i;:::-;;:::i;5246:136:19:-;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;1686:554:111:-;;;;;;;;;;-1:-1:-1;1686:554:111;;;;;:::i;:::-;;:::i;10462:330::-;;;;;;;;;;-1:-1:-1;10462:330:111;;;;;:::i;:::-;;:::i;6348:245:19:-;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;650:77:112:-;;;;;;;;;;-1:-1:-1;650:77:112;;;;;:::i;:::-;;;;;;;;;;;;;;11796:192:111;;;;;;;;;;-1:-1:-1;11796:192:111;;;;;:::i;:::-;;:::i;26593:140::-;;;;;;;;;;-1:-1:-1;26593:140:111;;;;;:::i;:::-;;:::i;2827:1107::-;;;;;;;;;;-1:-1:-1;2827:1107:111;;;;;:::i;:::-;;:::i;25966:457::-;;;;;;;;;;-1:-1:-1;25966:457:111;;;;;:::i;:::-;;:::i;4161:214:21:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;26982:542:111:-;;;;;;;;;;-1:-1:-1;26982:542:111;;;;;:::i;:::-;;:::i;27695:176::-;;;;;;;;;;-1:-1:-1;27695:176:111;;;;;:::i;:::-;;:::i;9069:182::-;;;;;;;;;;-1:-1:-1;9069:182:111;;;;;:::i;:::-;;:::i;4001:125::-;;;;;;;;;;-1:-1:-1;4001:125:111;;;;;:::i;:::-;-1:-1:-1;;;;;4090:29:111;4064:7;4090:29;;;:21;:29;;;;;;;4001:125;25461:244;;;;;;;;;;-1:-1:-1;25461:244:111;;;;;:::i;:::-;;:::i;13972:972::-;;;;;;;;;;-1:-1:-1;13972:972:111;;;;;:::i;:::-;;:::i;8661:180::-;;;;;;;;;;-1:-1:-1;8661:180:111;;;;;:::i;:::-;;:::i;2462:68:112:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2462:68:112;;10109:254:111;;;;;;;;;;-1:-1:-1;10109:254:111;;;;;:::i;:::-;;:::i;514:86:113:-;;;;;;;;;;;;;:::i;2186:152:112:-;;;;;;;;;;-1:-1:-1;2186:152:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4699:1563:111:-;;;;;;;;;;;;;:::i;9342:250::-;;;;;;;;;;-1:-1:-1;9342:250:111;;;;;:::i;:::-;;:::i;11173:230::-;;;;;;;;;;-1:-1:-1;11173:230:111;;;;;:::i;:::-;;:::i;2317:49:19:-;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;9689:326:111;;;;;;;;;;-1:-1:-1;9689:326:111;;;;;:::i;:::-;;:::i;19744:1588::-;;;;;;;;;;-1:-1:-1;19744:1588:111;;;;;:::i;:::-;;:::i;17307:108::-;;;;;;;;;;;;;:::i;1819:58:21:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;977:93:112:-;;;;;;;;;;-1:-1:-1;977:93:112;;;;;:::i;:::-;;;;;;;;;;;;;;12036:1885:111;;;;;;;;;;-1:-1:-1;12036:1885:111;;;;;:::i;:::-;;:::i;1051:125::-;;;;;;;;;;-1:-1:-1;1051:125:111;;;;;:::i;:::-;;:::i;2345:60:112:-;;;;;;;;;;-1:-1:-1;2345:60:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;1245:359:111;;;;;;;;;;-1:-1:-1;1245:359:111;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;8002:226:111:-;;;;;;;;;;-1:-1:-1;8002:226:111;;;;;:::i;:::-;;:::i;1832:210:112:-;;;;;;;;;;-1:-1:-1;1832:210:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:19;;;;;;;;;;-1:-1:-1;471:19:112;;;;-1:-1:-1;;;;;471:19:112;;;;;;-1:-1:-1;;;;;11791:32:140;;;11773:51;;11761:2;11746:18;471:19:112;11611:219:140;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;10872:215:111:-;-1:-1:-1;;;;;11026:36:111;;;11000:7;11026:36;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;10872:215;;;;;;:::o;2321:419::-;-1:-1:-1;;;;;2488:35:111;;2432:26;2488:35;;;:27;:35;;;;;2404:16;;2432:26;2488:44;;:42;:44::i;:::-;-1:-1:-1;;;;;2461:81:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2461:81:111;;2432:110;;2557:9;2552:156;-1:-1:-1;;;;;2576:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;2572:1;:48;2552:156;;;-1:-1:-1;;;;;2656:35:111;;;;;;:27;:35;;;;;:41;;2695:1;2656:38;:41::i;:::-;2641:9;2651:1;2641:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2641:56:111;;;:12;;;;;;;;;;;:56;2622:3;;2552:156;;;-1:-1:-1;2724:9:111;2321:419;-1:-1:-1;;2321:419:111:o;4287:406::-;4387:38;4417:6;4387:21;:38::i;:::-;4375:8;:50;;4367:104;;;;-1:-1:-1;;;4367:104:111;;12169:2:140;4367:104:111;;;12151:21:140;12208:2;12188:18;;;12181:30;12247:34;12227:18;;;12220:62;-1:-1:-1;;;12298:18:140;;;12291:39;12347:19;;4367:104:111;;;;;;;;;4500:25;4518:6;4500:17;:25::i;:::-;4489:8;:36;4481:92;;;;-1:-1:-1;;;4481:92:111;;12579:2:140;4481:92:111;;;12561:21:140;12618:2;12598:18;;;12591:30;12657:34;12637:18;;;12630:62;-1:-1:-1;;;12708:18:140;;;12701:41;12759:19;;4481:92:111;12377:407:140;4481:92:111;4591:10;-1:-1:-1;;;;;4591:20:111;;;4583:45;;;;-1:-1:-1;;;4583:45:111;;12991:2:140;4583:45:111;;;12973:21:140;13030:2;13010:18;;;13003:30;-1:-1:-1;;;13049:18:140;;;13042:42;13101:18;;4583:45:111;12789:336:140;4583:45:111;-1:-1:-1;;;;;4638:37:111;;;;;;;:29;:37;;;;;:48;4287:406::o;8307:134::-;-1:-1:-1;;;;;8397:37:111;8371:7;8397:37;;;:29;:37;;;;;;;8307:134::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;11409:381:111:-;11505:7;;;11559:195;-1:-1:-1;;;;;11583:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;11579:1;:49;11559:195;;;-1:-1:-1;;;;;11690:36:111;;;;;;:28;:36;;;;;11666:77;;11675:6;;11683:5;;11690:42;;11730:1;11690:39;:42::i;:::-;11734:8;11666;:77::i;:::-;11649:94;;;;:::i;:::-;;-1:-1:-1;11630:3:111;;11559:195;;;-1:-1:-1;11770:13:111;11409:381;-1:-1:-1;;;;11409:381:111:o;26739:151::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26851:32:111::1;-1:-1:-1::0;;;;;;;;;;;26878:4:111::1;26851:10;:32::i;:::-;26739:151:::0;;:::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;1686:554:111:-;-1:-1:-1;;;;;1983:36:111;;1926:27;1983:36;;;:28;:36;;;;;1770:16;;1926:27;1983:45;;:43;:45::i;:::-;-1:-1:-1;;;;;1956:82:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1956:82:111;;1926:112;;2053:9;2048:159;-1:-1:-1;;;;;2072:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;2068:1;:49;2048:159;;;-1:-1:-1;;;;;2154:36:111;;;;;;:28;:36;;;;;:42;;2194:1;2154:39;:42::i;:::-;2138:10;2149:1;2138:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2138:58:111;;;:13;;;;;;;;;;;:58;2119:3;;2048:159;;10462:330;10603:7;10641:144;10669:6;10693:25;10711:6;10693:17;:25::i;:::-;10736:9;10763:8;10641:10;:144::i;:::-;10622:163;10462:330;-1:-1:-1;;;;10462:330:111:o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;11796:192:111:-;11894:7;11920:61;11937:6;11945:25;11963:6;11945:17;:25::i;:::-;11972:8;11920:16;:61::i;26593:140::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26695:31:111::1;-1:-1:-1::0;;;;;;;;;;;26721:4:111::1;26695:9;:31::i;2827:1107::-:0;-1:-1:-1;;;;;3022:35:111;;2997:22;3022:35;;;:27;:35;;;;;2923:16;;2997:22;3022:44;;:42;:44::i;:::-;2997:69;;3123:27;3169:9;3164:258;3188:14;3184:1;:18;3164:258;;;-1:-1:-1;;;;;3242:35:111;;3223:16;3242:35;;;:27;:35;;;;;:41;;3281:1;3242:38;:41::i;:::-;3223:60;;3355:1;3301:51;3335:6;3343:8;3301:33;:51::i;:::-;:55;3297:115;;;3376:21;;;;:::i;:::-;;;;3297:115;-1:-1:-1;3204:3:111;;3164:258;;;;3476:32;3525:19;-1:-1:-1;;;;;3511:34:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3511:34:111;;3476:69;;3555:19;3593:9;3588:307;3612:14;3608:1;:18;3588:307;;;-1:-1:-1;;;;;3666:35:111;;3647:16;3666:35;;;:27;:35;;;;;:41;;3705:1;3666:38;:41::i;:::-;3647:60;;3779:1;3725:51;3759:6;3767:8;3725:33;:51::i;:::-;:55;3721:164;;;3831:8;3800:15;3816:11;3800:28;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3800:39:111;;;:28;;;;;;;;;;;:39;3857:13;;;;:::i;:::-;;;;3721:164;-1:-1:-1;3628:3:111;;3588:307;;;-1:-1:-1;3912:15:111;;2827:1107;-1:-1:-1;;;;;2827:1107:111:o;25966:457::-;2500:21:57;:19;:21::i;:::-;26265:9:111::1;26260:157;26280:20:::0;;::::1;26260:157;;;26321:85;26354:10;26366:9;;26376:1;26366:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26380:10;;26391:1;26380:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26395:7;;26403:1;26395:10;;;;;;;:::i;:::-;;;;;;;26321:32;:85::i;:::-;26302:3;;26260:157;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;25966:457:111;;;;;;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;26982:542:111:-;27081:7;27100:27;27130:31;27154:6;27130:23;:31::i;:::-;27100:61;;27171:26;27200:30;27223:6;27200:22;:30::i;:::-;27171:59;;27240:18;27278:9;27273:218;27297:10;:17;27293:1;:21;27273:218;;;27340:9;27335:146;27359:9;:16;27355:1;:20;27335:146;;;27414:52;27423:6;27431:5;27438:10;27449:1;27438:13;;;;;;;;:::i;:::-;;;;;;;27453:9;27463:1;27453:12;;;;;;;;:::i;:::-;;;;;;;27414:8;:52::i;:::-;27400:66;;;;:::i;:::-;;-1:-1:-1;27377:3:111;;27335:146;;;-1:-1:-1;27316:3:111;;27273:218;;;-1:-1:-1;27507:10:111;26982:542;-1:-1:-1;;;;;26982:542:111:o;27695:176::-;27788:7;27814:50;27830:6;27838:25;27856:6;27838:17;:25::i;9069:182::-;9148:7;9174:25;9192:6;9174:17;:25::i;:::-;:30;:70;;9211:29;9233:6;9211:21;:29::i;:::-;:33;;9243:1;9211:33;:::i;:::-;9174:70;;;9207:1;9167:77;9069:182;-1:-1:-1;;9069:182:111:o;25461:244::-;2500:21:57;:19;:21::i;:::-;25625:73:111::1;25658:10;25670:8;25680:9;25691:6;25625:32;:73::i;:::-;2542:20:57::0;1857:1;3068:7;:21;2888:208;13972:972:111;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;14448:304:111::2;14473:6;14633:42;14668:6;14633:34;:42::i;:::-;14689:9;14712:10;14736:6;14448:11;:304::i;:::-;14874:9;-1:-1:-1::0;;;;;14768:169:111::2;14818:42;14853:6;14818:34;:42::i;:::-;14768:169;::::0;;14897:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;14768:169:111;::::2;::::0;::::2;::::0;13679:18:140;14768:169:111::2;;;;;;;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;8661:180:111;8742:7;8768:25;8786:6;8768:17;:25::i;:::-;:30;:66;;8805:25;8823:6;8805:17;:25::i;10109:254::-;-1:-1:-1;;;;;10282:46:111;;;10256:7;10282:46;;;:38;:46;;;;;;;;:53;;;;;;;;;:64;;;;;;;;;;;:74;;;;;;;;;;;;10109:254::o;514:86:113:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;573:20:113::1;:18;:20::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;514:86:113:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4699:1563:111:-;2500:21:57;:19;:21::i;:::-;4779:10:111::1;4762:14;4804:29:::0;;;:21:::1;:29;::::0;;;;;::::1;;4800:66;;;4842:24;;-1:-1:-1::0;;;4842:24:111::1;;;;;;;;;;;4800:66;-1:-1:-1::0;;;;;4876:29:111;::::1;;::::0;;;:21:::1;:29;::::0;;;;;;;:36;;-1:-1:-1;;4876:36:111::1;4908:4;4876:36:::0;;::::1;::::0;;;4938:29;;;;;;4931:41:::1;;;;:::i;:::-;5094:29;5116:6;5094:21;:29::i;:::-;-1:-1:-1::0;;;;;5054:37:111;::::1;;::::0;;;:29:::1;:37;::::0;;;;:69;;;;5134:1122:::1;-1:-1:-1::0;;;;;5158:35:111;::::1;;::::0;;;:27:::1;:35;::::0;;;;:44:::1;::::0;:42:::1;:44::i;:::-;5154:1;:48;5134:1122;;;-1:-1:-1::0;;;;;5242:35:111;::::1;5223:16;5242:35:::0;;;:27:::1;:35;::::0;;;;:41:::1;::::0;5281:1;5242:38:::1;:41::i;:::-;5223:60;;5303:9;5298:952;-1:-1:-1::0;;;;;5322:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;:45:::1;::::0;:43:::1;:45::i;:::-;5318:1;:49;5298:952;;;-1:-1:-1::0;;;;;5412:36:111;::::1;5392:17;5412:36:::0;;;:28:::1;:36;::::0;;;;:42:::1;::::0;5452:1;5412:39:::1;:42::i;:::-;5392:62;;5531:21;5555:138;5585:6;5613:1;5636:9;5667:8;5555;:138::i;:::-;5531:162;;5907:1;5879:25;5897:6;5879:17;:25::i;:::-;:29;5875:365;;;5960:1;5932:25;5950:6;5932:17;:25::i;:::-;:29;5928:298;;;5985:222;6020:6;6052:25;6070:6;6052:17;:25::i;:::-;6103:9;6138:8;6172:13;5985:9;:222::i;:::-;-1:-1:-1::0;;5369:3:111::1;;5298:952;;;-1:-1:-1::0;;5204:3:111::1;;5134:1122;;;;4752:1510;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;4699:1563:111:o;9342:250::-;-1:-1:-1;;;;;9513:44:111;;;9487:7;9513:44;;;:36;:44;;;;;;;;:51;;;;;;;;;:62;;;;;;;;;;;:72;;;;;;;;;;;;9342:250::o;11173:230::-;11295:7;11333:63;11351:6;11359:25;11377:6;11359:17;:25::i;:::-;11386:9;11333:17;:63::i;9689:326::-;9828:7;9866:142;9892:6;9916:25;9934:6;9916:17;:25::i;:::-;9959:9;9986:8;9866;:142::i;19744:1588::-;2500:21:57;:19;:21::i;:::-;19955:9:111::1;19950:1376;19970:20:::0;;::::1;19950:1376;;;20238:20;20261:276;20287:180;20317:10;20349:31;20367:9;;20377:1;20367:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20349:31::-;20402:10;;20413:1;20402:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20437:9;;20447:1;20437:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20287:180::-;20485:38;20494:7;;20502:1;20494:10;;;;;;;:::i;:::-;;;;;;;20506:13;;20520:1;20506:16;;;;;;;:::i;:::-;;;;;;;20485:8;:38::i;:::-;20261:8;:276::i;:::-;20238:299;;20551:238;20601:4;20702:9;;20712:1;20702:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20732:10;;20743:1;20732:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20763:12;20551:24;:238::i;:::-;20948:189;20977:10;21005:29;21023:10;21005:17;:29::i;:::-;21052:10;;21063:1;21052:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21083:9;;21093:1;21083:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21113:7;;21121:1;21113:10;;;;;;;:::i;:::-;;;;;;;20948:11;:189::i;:::-;21152:163;21183:10;21211:29;21229:10;21211:17;:29::i;:::-;21258:10;;21269:1;21258:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21289:9;;21299:1;21289:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21152:13;:163::i;:::-;-1:-1:-1::0;19992:3:111::1;;19950:1376;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;19744:1588:111;;;;;;;;:::o;17307:108::-;17351:57;17366:10;17378:29;17396:10;17378:17;:29::i;:::-;17351:14;:57::i;12036:1885::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;12241:35:111;::::2;;::::0;;;:27:::2;:35;::::0;;;;:51:::2;::::0;12281:10:::2;12241:39;:51::i;:::-;-1:-1:-1::0;12666:21:111::2;12690:5:::0;;:30:::2;::::0;-1:-1:-1;;;12690:30:111;;12714:4:::2;12690:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;12690:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;12690:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13009:57;::::0;-1:-1:-1;;;13009:57:111;;13032:10:::2;13009:57;::::0;::::2;14756:51:140::0;13052:4:111::2;14823:18:140::0;;;14816:60;14892:18;;;14885:34;;;12666:54:111;;-1:-1:-1;;;;;;13009:22:111;::::2;::::0;::::2;::::0;14729:18:140;;13009:57:111::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13199:22:111::2;13215:6:::0;13199:13;:22:::2;:::i;:::-;13165:5;::::0;:30:::2;::::0;-1:-1:-1;;;13165:30:111;;13189:4:::2;13165:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;13165:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;13165:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;13161:114;;13242:33;;-1:-1:-1::0;;;13242:33:111::2;;;;;;;;;;;13161:114;13352:311;13375:6;13535:42;13570:6;13535:34;:42::i;:::-;13599:9;13623:10;13647:6;13352:9;:311::i;:::-;13850:9;-1:-1:-1::0;;;;;13738:176:111::2;13786:42;13821:6;13786:34;:42::i;:::-;13738:176;::::0;;13874:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;13738:176:111;::::2;::::0;::::2;::::0;13679:18:140;13738:176:111::2;;;;;;;12178:1743;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;1051:125:111;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;1115:30:111::1;:28;:30::i;:::-;1155:5;:14:::0;;-1:-1:-1;;;;;;1155:14:111::1;-1:-1:-1::0;;;;;1155:14:111;::::1;;::::0;;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;4092:1081;;;;;1051:125:111;:::o;1245:359::-;2500:21:57;:19;:21::i;:::-;1394:10:111::1;1377:14;1414:29:::0;;;:21:::1;:29;::::0;;;;:45;;;1470:128:::1;1490:21:::0;;::::1;1470:128;;;1532:55;1573:10;;1584:1;1573:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1532:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;;:40:::1;:55::i;:::-;-1:-1:-1::0;1513:3:111::1;;1470:128;;;;1367:237;2542:20:57::0;1857:1;3068:7;:21;2888:208;5662:138:19;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;8002:226:111:-:0;-1:-1:-1;;;;;8093:29:111;;8070:7;8093:29;;;:21;:29;;;;;;:34;;8089:68;;8136:21;;-1:-1:-1;;;8136:21:111;;;;;;;;;;;8089:68;-1:-1:-1;;;;;8192:29:111;;;;;;:21;:29;;;;;;8174:47;;:15;:47;:::i;9090:115:67:-;9153:7;9179:19;9187:3;4556:18;;4474:107;9547:156;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2575:307:57;1899:1;2702:7;;:18;2698:86;;2743:30;;-1:-1:-1;;;2743:30:57;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;24467:315:111:-;24625:4;24603:10;:27;24595:59;;;;-1:-1:-1;;;24595:59:111;;15636:2:140;24595:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24595:59:111;15434:343:140;24595:59:111;24680:5;;-1:-1:-1;;;;;24672:27:111;;;24680:5;;24672:27;24664:59;;;;-1:-1:-1;;;24664:59:111;;15984:2:140;24664:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;24664:59:111;15782:343:140;24664:59:111;24733:5;;:42;;-1:-1:-1;;;24733:42:111;;-1:-1:-1;;;;;14774:32:140;;;24733:42:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;24733:5:111;;;;:18;;14729::140;;24733:42:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4603:312:21:-;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;965:103:113;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;11791:32:140;;6518:60:21;;;11773:51:140;11746:18;;6518:60:21;11611:219:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1434:25:140;;;1407:18;;6317:34:21;1288:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;6945:261:111;-1:-1:-1;;;;;7115:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;;;:84;;7193:6;;7115:46;:84;;7193:6;;7115:84;:::i;:::-;;;;-1:-1:-1;;;;;;;6945:261:111:o;606:103:113:-;6931:20:20;:18;:20::i;:::-;672:30:113::1;:28;:30::i;6268:331:111:-:0;-1:-1:-1;;;;;6436:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6512:6;;6436:44;:82;;6512:6;;6436:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6528:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6586:6;;6528:36;:64;;6586:6;;6528:64;:::i;3371:111:64:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;21690:1458:111;21868:4;-1:-1:-1;;;;;21852:21:111;;;21848:1294;;21953:5;;-1:-1:-1;;;;;21945:27:111;;;21953:5;;21945:27;21941:413;;22068:67;22101:4;22107:8;22117:9;22128:6;22068:32;:67::i;:::-;21848:1294;;21941:413;22268:71;22305:4;22311:8;22321:9;22332:6;22268:36;:71::i;21848:1294::-;22752:5;;-1:-1:-1;;;;;22744:27:111;;;22752:5;;22744:27;22740:392;;22863:67;22896:4;22902:8;22912:9;22923:6;22863:32;:67::i;22740:392::-;23046:71;23083:4;23089:8;23099:9;23110:6;23046:36;:71::i;17722:796::-;17967:5;17945:19;18006:108;18028:6;17967:5;18073:9;18096:8;18006;:108::i;:::-;17982:132;;18223:6;18207:13;:22;18203:309;;;18245:163;18275:6;18299:11;18328:9;18355:8;18381:13;18245:12;:163::i;:::-;18203:309;;;18439:62;18452:6;18460:11;18473:9;18484:8;18494:6;18439:12;:62::i;:::-;17882:636;;17722:796;;;;;:::o;18850:888::-;19057:21;19081:102;19103:6;19123:5;19142:9;19165:8;19081;:102::i;:::-;19057:126;-1:-1:-1;19193:19:111;19215:9;:5;19223:1;19215:9;:::i;:::-;19193:31;;19234:23;19260:110;19284:6;19304:11;19329:9;19352:8;19260:10;:110::i;:::-;19234:136;;19403:13;19385:15;:31;19381:351;;;-1:-1:-1;;;;;7652:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;:83;;;19559:162;7482:260;16491:810;16720:9;16715:423;-1:-1:-1;;;;;16739:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;16735:1;:48;16715:423;;;-1:-1:-1;;;;;16823:35:111;;16804:16;16823:35;;;:27;:35;;;;;:41;;16862:1;16823:38;:41::i;:::-;16804:60;;16884:9;16879:249;-1:-1:-1;;;;;16903:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;16899:1;:49;16879:249;;;-1:-1:-1;;;;;16993:36:111;;16973:17;16993:36;;;:28;:36;;;;;:42;;17033:1;16993:39;:42::i;:::-;16973:62;;17054:59;17072:6;17080:11;17093:9;17104:8;17054:17;:59::i;:::-;-1:-1:-1;16950:3:111;;16879:249;;;-1:-1:-1;;16785:3:111;;16715:423;;;-1:-1:-1;17227:15:111;:11;17241:1;17227:15;:::i;:::-;-1:-1:-1;;;;;17187:37:111;;;;;;:29;:37;;;;;;;:55;;;;17258:36;;;;;;17282:11;1434:25:140;;1422:2;1407:18;;1288:177;17258:36:111;;;;;;;;16491:810;;:::o;8289:150:67:-;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:67;;8382:4;:50::i;715:125:113:-;6931:20:20;:18;:20::i;:::-;791:42:113::1;2362:4:19;822:10:113;791;:42::i;4923:118:67:-:0;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;13724:32:140;;4514:47:19;;;13706:51:140;13773:18;;;13766:34;;;13679:18;;4514:47:19;13532:274:140;2264:344:40;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;23282:313:111;-1:-1:-1;;;;;23418:21:111;;23434:4;23418:21;23410:67;;;;-1:-1:-1;;;23410:67:111;;16800:2:140;23410:67:111;;;16782:21:140;16839:2;16819:18;;;16812:30;16878:34;16858:18;;;16851:62;-1:-1:-1;;;16929:18:140;;;16922:31;16970:19;;23410:67:111;16598:397:140;23410:67:111;23503:5;;-1:-1:-1;;;;;23495:27:111;;;23503:5;;23495:27;23487:59;;;;-1:-1:-1;;;23487:59:111;;15984:2:140;23487:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;23487:59:111;15782:343:140;23487:59:111;23556:5;;:32;;-1:-1:-1;;;23556:32:111;;-1:-1:-1;;;;;13724:32:140;;;23556::111;;;13706:51:140;13773:18;;;13766:34;;;23556:5:111;;;;:14;;13679:18:140;;23556:32:111;13532:274:140;23664:394:111;-1:-1:-1;;;;;23804:21:111;;23820:4;23804:21;23796:67;;;;-1:-1:-1;;;23796:67:111;;17202:2:140;23796:67:111;;;17184:21:140;17241:2;17221:18;;;17214:30;17280:34;17260:18;;;17253:62;-1:-1:-1;;;17331:18:140;;;17324:31;17372:19;;23796:67:111;17000:397:140;23796:67:111;23889:5;;-1:-1:-1;;;;;23881:27:111;;;23889:5;;23881:27;23873:64;;;;-1:-1:-1;;;23873:64:111;;17604:2:140;23873:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;23873:64:111;17402:348:140;23873:64:111;23947:5;;:32;;-1:-1:-1;;;23947:32:111;;-1:-1:-1;;;;;13724:32:140;;;23947::111;;;13706:51:140;13773:18;;;13766:34;;;23947:5:111;;;;:13;;13679:18:140;;23947:32:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23989:62:111;;-1:-1:-1;;;23989:62:111;;-1:-1:-1;;;;;13724:32:140;;;23989:62:111;;;13706:51:140;13773:18;;;13766:34;;;23989:44:111;;;;;13679:18:140;;23989:62:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24859:354;25021:4;24999:10;:27;24991:59;;;;-1:-1:-1;;;24991:59:111;;15636:2:140;24991:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24991:59:111;15434:343:140;24991:59:111;25076:5;;-1:-1:-1;;;;;25068:27:111;;;25076:5;;25068:27;25060:64;;;;-1:-1:-1;;;25060:64:111;;17604:2:140;25060:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;25060:64:111;17402:348:140;25060:64:111;25134:72;;-1:-1:-1;;;25134:72:111;;-1:-1:-1;;;;;14774:32:140;;;25134:72:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;25134:48:111;;;;;14729:18:140;;25134:72:111;14554:371:140;6605:334:111;-1:-1:-1;;;;;6776:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6852:6;;6776:44;:82;;6852:6;;6776:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6868:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6926:6;;6868:36;:64;;6926:6;;6868:64;:::i;15011:1474::-;15265:19;15287:108;15309:6;15329:11;15354:9;15377:8;15287;:108::i;:::-;15265:130;-1:-1:-1;15405:21:111;15429:114;15453:6;15473:15;:11;15487:1;15473:15;:::i;:::-;15502:9;15525:8;15429:10;:114::i;:::-;15405:138;;15573:11;15557:13;:27;15553:85;;;-1:-1:-1;15616:11:111;15553:85;15647:17;15667:27;15681:13;15667:11;:27;:::i;:::-;15647:47;-1:-1:-1;15705:66:111;15715:6;15723:15;:11;15737:1;15723:15;:::i;:::-;15740:9;15751:8;15761:9;15705;:66::i;:::-;16181:17;;16177:131;;16214:83;16255:4;16262:8;16272:9;16283:13;16214:32;:83::i;:::-;16407:9;-1:-1:-1;;;;;16323:155:111;16382:11;16360:8;-1:-1:-1;;;;;16323:155:111;;16430:11;16455:13;16323:155;;;;;;18062:25:140;;;18118:2;18103:18;;18096:34;18050:2;18035:18;;17888:248;16323:155:111;;;;;;;;15159:1326;;;15011:1474;;;;:::o;2241:406:67:-;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:67;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:67;2618:12;;1671:281:40;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;11791:32:140;;1805:47:40;;;11773:51:140;11746:18;;1805:47:40;11611:219:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;11791:32:140;;4933:24:53;;;11773:51:140;11746:18;;4933:24:53;11611:219:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:140;;562:42;;552:70;;618:1;615;608:12;633:650;719:6;727;735;743;796:3;784:9;775:7;771:23;767:33;764:53;;;813:1;810;803:12;764:53;852:9;839:23;871:31;896:5;871:31;:::i;:::-;921:5;-1:-1:-1;999:2:140;984:18;;971:32;;-1:-1:-1;1081:2:140;1066:18;;1053:32;1094:33;1053:32;1094:33;:::i;:::-;1146:7;-1:-1:-1;1205:2:140;1190:18;;1177:32;1218:33;1177:32;1218:33;:::i;:::-;633:650;;;;-1:-1:-1;633:650:140;;-1:-1:-1;;633:650:140:o;1470:508::-;1547:6;1555;1563;1616:2;1604:9;1595:7;1591:23;1587:32;1584:52;;;1632:1;1629;1622:12;1584:52;1671:9;1658:23;1690:31;1715:5;1690:31;:::i;:::-;1740:5;-1:-1:-1;1818:2:140;1803:18;;1790:32;;-1:-1:-1;1900:2:140;1885:18;;1872:32;1913:33;1872:32;1913:33;:::i;:::-;1965:7;1955:17;;;1470:508;;;;;:::o;1983:247::-;2042:6;2095:2;2083:9;2074:7;2070:23;2066:32;2063:52;;;2111:1;2108;2101:12;2063:52;2150:9;2137:23;2169:31;2194:5;2169:31;:::i;2235:637::-;2425:2;2437:21;;;2507:13;;2410:18;;;2529:22;;;2377:4;;2608:15;;;2582:2;2567:18;;;2377:4;2651:195;2665:6;2662:1;2659:13;2651:195;;;2730:13;;-1:-1:-1;;;;;2726:39:140;2714:52;;2795:2;2821:15;;;;2786:12;;;;2762:1;2680:9;2651:195;;2877:367;2945:6;2953;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;3061:9;3048:23;3080:31;3105:5;3080:31;:::i;:::-;3130:5;3208:2;3193:18;;;;3180:32;;-1:-1:-1;;;2877:367:140:o;3249:226::-;3308:6;3361:2;3349:9;3340:7;3336:23;3332:32;3329:52;;;3377:1;3374;3367:12;3329:52;-1:-1:-1;3422:23:140;;3249:226;-1:-1:-1;3249:226:140:o;3662:367::-;3730:6;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3852:23;;;-1:-1:-1;3951:2:140;3936:18;;3923:32;3964:33;3923:32;3964:33;:::i;:::-;4016:7;4006:17;;;3662:367;;;;;:::o;4034:529::-;4111:6;4119;4127;4180:2;4168:9;4159:7;4155:23;4151:32;4148:52;;;4196:1;4193;4186:12;4148:52;4235:9;4222:23;4254:31;4279:5;4254:31;:::i;:::-;4304:5;-1:-1:-1;4361:2:140;4346:18;;4333:32;4374:33;4333:32;4374:33;:::i;:::-;4426:7;-1:-1:-1;4485:2:140;4470:18;;4457:32;4498:33;4457:32;4498:33;:::i;4568:388::-;4636:6;4644;4697:2;4685:9;4676:7;4672:23;4668:32;4665:52;;;4713:1;4710;4703:12;4665:52;4752:9;4739:23;4771:31;4796:5;4771:31;:::i;:::-;4821:5;-1:-1:-1;4878:2:140;4863:18;;4850:32;4891:33;4850:32;4891:33;:::i;4961:367::-;5024:8;5034:6;5088:3;5081:4;5073:6;5069:17;5065:27;5055:55;;5106:1;5103;5096:12;5055:55;-1:-1:-1;5129:20:140;;-1:-1:-1;;;;;5161:30:140;;5158:50;;;5204:1;5201;5194:12;5158:50;5241:4;5233:6;5229:17;5217:29;;5301:3;5294:4;5284:6;5281:1;5277:14;5269:6;5265:27;5261:38;5258:47;5255:67;;;5318:1;5315;5308:12;5255:67;4961:367;;;;;:::o;5333:1099::-;5491:6;5499;5507;5515;5523;5531;5584:2;5572:9;5563:7;5559:23;5555:32;5552:52;;;5600:1;5597;5590:12;5552:52;5640:9;5627:23;-1:-1:-1;;;;;5665:6:140;5662:30;5659:50;;;5705:1;5702;5695:12;5659:50;5744:70;5806:7;5797:6;5786:9;5782:22;5744:70;:::i;:::-;5833:8;;-1:-1:-1;5718:96:140;-1:-1:-1;;5921:2:140;5906:18;;5893:32;-1:-1:-1;;;;;5937:32:140;;5934:52;;;5982:1;5979;5972:12;5934:52;6021:72;6085:7;6074:8;6063:9;6059:24;6021:72;:::i;:::-;6112:8;;-1:-1:-1;5995:98:140;-1:-1:-1;;6200:2:140;6185:18;;6172:32;-1:-1:-1;;;;;6216:32:140;;6213:52;;;6261:1;6258;6251:12;6213:52;6300:72;6364:7;6353:8;6342:9;6338:24;6300:72;:::i;:::-;5333:1099;;;;-1:-1:-1;5333:1099:140;;-1:-1:-1;5333:1099:140;;6391:8;;5333:1099;-1:-1:-1;;;5333:1099:140:o;6437:127::-;6498:10;6493:3;6489:20;6486:1;6479:31;6529:4;6526:1;6519:15;6553:4;6550:1;6543:15;6569:1079;6646:6;6654;6707:2;6695:9;6686:7;6682:23;6678:32;6675:52;;;6723:1;6720;6713:12;6675:52;6762:9;6749:23;6781:31;6806:5;6781:31;:::i;:::-;6831:5;-1:-1:-1;6887:2:140;6872:18;;6859:32;-1:-1:-1;;;;;6903:30:140;;6900:50;;;6946:1;6943;6936:12;6900:50;6969:22;;7022:4;7014:13;;7010:27;-1:-1:-1;7000:55:140;;7051:1;7048;7041:12;7000:55;7091:2;7078:16;-1:-1:-1;;;;;7109:6:140;7106:30;7103:56;;;7139:18;;:::i;:::-;7188:2;7182:9;7280:2;7242:17;;-1:-1:-1;;7238:31:140;;;7271:2;7234:40;7230:54;7218:67;;-1:-1:-1;;;;;7300:34:140;;7336:22;;;7297:62;7294:88;;;7362:18;;:::i;:::-;7398:2;7391:22;7422;;;7463:15;;;7480:2;7459:24;7456:37;-1:-1:-1;7453:57:140;;;7506:1;7503;7496:12;7453:57;7562:6;7557:2;7553;7549:11;7544:2;7536:6;7532:15;7519:50;7615:1;7610:2;7601:6;7593;7589:19;7585:28;7578:39;7636:6;7626:16;;;;;6569:1079;;;;;:::o;7653:508::-;7730:6;7738;7746;7799:2;7787:9;7778:7;7774:23;7770:32;7767:52;;;7815:1;7812;7805:12;7767:52;7854:9;7841:23;7873:31;7898:5;7873:31;:::i;:::-;7923:5;-1:-1:-1;7980:2:140;7965:18;;7952:32;7993:33;7952:32;7993:33;:::i;:::-;7653:508;;8045:7;;-1:-1:-1;;;8125:2:140;8110:18;;;;8097:32;;7653:508::o;8166:1431::-;8360:6;8368;8376;8384;8392;8400;8408;8416;8469:3;8457:9;8448:7;8444:23;8440:33;8437:53;;;8486:1;8483;8476:12;8437:53;8526:9;8513:23;-1:-1:-1;;;;;8551:6:140;8548:30;8545:50;;;8591:1;8588;8581:12;8545:50;8630:70;8692:7;8683:6;8672:9;8668:22;8630:70;:::i;:::-;8719:8;;-1:-1:-1;8604:96:140;-1:-1:-1;;8807:2:140;8792:18;;8779:32;-1:-1:-1;;;;;8823:32:140;;8820:52;;;8868:1;8865;8858:12;8820:52;8907:72;8971:7;8960:8;8949:9;8945:24;8907:72;:::i;:::-;8998:8;;-1:-1:-1;8881:98:140;-1:-1:-1;;9086:2:140;9071:18;;9058:32;-1:-1:-1;;;;;9102:32:140;;9099:52;;;9147:1;9144;9137:12;9099:52;9186:72;9250:7;9239:8;9228:9;9224:24;9186:72;:::i;:::-;9277:8;;-1:-1:-1;9160:98:140;-1:-1:-1;;9365:2:140;9350:18;;9337:32;-1:-1:-1;;;;;9381:32:140;;9378:52;;;9426:1;9423;9416:12;9378:52;9465:72;9529:7;9518:8;9507:9;9503:24;9465:72;:::i;:::-;8166:1431;;;;-1:-1:-1;8166:1431:140;;-1:-1:-1;8166:1431:140;;;;;;9556:8;-1:-1:-1;;;8166:1431:140:o;9602:250::-;9687:1;9697:113;9711:6;9708:1;9705:13;9697:113;;;9787:11;;;9781:18;9768:11;;;9761:39;9733:2;9726:10;9697:113;;;-1:-1:-1;;9844:1:140;9826:16;;9819:27;9602:250::o;9857:396::-;10006:2;9995:9;9988:21;9969:4;10038:6;10032:13;10081:6;10076:2;10065:9;10061:18;10054:34;10097:79;10169:6;10164:2;10153:9;10149:18;10144:2;10136:6;10132:15;10097:79;:::i;:::-;10237:2;10216:15;-1:-1:-1;;10212:29:140;10197:45;;;;10244:2;10193:54;;9857:396;-1:-1:-1;;9857:396:140:o;11055:551::-;11150:6;11158;11166;11219:2;11207:9;11198:7;11194:23;11190:32;11187:52;;;11235:1;11232;11225:12;11187:52;11280:23;;;-1:-1:-1;11378:2:140;11363:18;;11350:32;-1:-1:-1;;;;;11394:30:140;;11391:50;;;11437:1;11434;11427:12;11391:50;11476:70;11538:7;11529:6;11518:9;11514:22;11476:70;:::i;:::-;11055:551;;11565:8;;-1:-1:-1;11450:96:140;;-1:-1:-1;;;;11055:551:140:o;11835:127::-;11896:10;11891:3;11887:20;11884:1;11877:31;11927:4;11924:1;11917:15;11951:4;11948:1;11941:15;13130:127;13191:10;13186:3;13182:20;13179:1;13172:31;13222:4;13219:1;13212:15;13246:4;13243:1;13236:15;13262:125;13327:9;;;13348:10;;;13345:36;;;13361:18;;:::i;13392:135::-;13431:3;13452:17;;;13449:43;;13472:18;;:::i;:::-;-1:-1:-1;13519:1:140;13508:13;;13392:135::o;14025:127::-;14086:10;14081:3;14077:20;14074:1;14067:31;14117:4;14114:1;14107:15;14141:4;14138:1;14131:15;14365:184;14435:6;14488:2;14476:9;14467:7;14463:23;14459:32;14456:52;;;14504:1;14501;14494:12;14456:52;-1:-1:-1;14527:16:140;;14365:184;-1:-1:-1;14365:184:140:o;14930:277::-;14997:6;15050:2;15038:9;15029:7;15025:23;15021:32;15018:52;;;15066:1;15063;15056:12;15018:52;15098:9;15092:16;15151:5;15144:13;15137:21;15130:5;15127:32;15117:60;;15173:1;15170;15163:12;15212:217;15252:1;15278;15268:132;;15322:10;15317:3;15313:20;15310:1;15303:31;15357:4;15354:1;15347:15;15385:4;15382:1;15375:15;15268:132;-1:-1:-1;15414:9:140;;15212:217::o;17755:128::-;17822:9;;;17843:11;;;17840:37;;;17857:18;;:::i;18141:287::-;18270:3;18308:6;18302:13;18324:66;18383:6;18378:3;18371:4;18363:6;18359:17;18324:66;:::i;:::-;18406:16;;;;;18141:287;-1:-1:-1;;18141:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":7976,"length":32},{"start":8017,"length":32},{"start":8341,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WHITELIST_ROLE()":"7a997ab7","acceptGenesisCeremony()":"92a2ebf3","computeAllStake(address,uint256)":"55bdbe4c","computeAllStakeForAcceptingEpoch(address)":"574663a9","currentAcceptingEpochByDomain(address)":"b1de97f7","domainGenesisAccepted(address)":"d1ba90ff","epochDurationByDomain(address)":"3bccf635","getAcceptingEpoch(address)":"22fceb75","getAttesterStake(address,uint256,address)":"24fdfddf","getAttesterStakeForAcceptingEpoch(address,address)":"3debeadc","getCustodianStake(address,uint256,address)":"0ce52af5","getCustodianStakeForAcceptingEpoch(address,address)":"9db92f68","getEpochByL1BlockTime(address)":"d980b40d","getEpochDuration(address)":"5c534359","getNextAcceptingEpochWithException(address)":"771fcfc4","getNextPresentEpochWithException(address)":"57dd6a94","getRegisteredAttesters(address)":"1789aeb4","getRegisteredCustodians(address)":"341d5ef5","getRoleAdmin(bytes32)":"248a9ca3","getStake(address,uint256,address,address)":"93dfb85c","getStakeForAcceptingEpoch(address,address,address)":"a78d1fef","getStakedAttestersForAcceptingEpoch(address)":"4234a479","getUnstake(address,uint256,address,address)":"7d93768b","getUnstakeForAcceptingEpoch(address,address,address)":"34eada3a","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address)":"c4d66de8","proxiableUUID()":"52d1902d","registerDomain(uint256,address[])":"d37304f8","removeAddressFromWhitelist(address)":"286dd3f5","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardArray(address[],uint256[],address[])":"4e76a139","rewardFromDomain(address,uint256,address)":"5e00bf46","rollOverEpoch()":"a887b71c","setAcceptingEpoch(address,uint256)":"1dc8b949","slash(address[],address[],uint256[],uint256[])":"a885c975","stake(address,address,uint256)":"bf6eac2f","stakesByDomainEpochCustodian(address,uint256,address)":"86af70d1","stakesByDomainEpochCustodianAttester(address,uint256,address,address)":"0c8f522f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","unstake(address,address,uint256)":"60829f8a","unstakesByDomainEpochCustodianAttester(address,uint256,address,address)":"e6e3fb3a","upgradeToAndCall(address,bytes)":"4f1ef286","whitelistAddress(address)":"41566585"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodianTransferAmountMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EpochDurationNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisAlreadyAccepted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakeExceedsGenesisStake\",\"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\":\"attester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstake\",\"type\":\"uint256\"}],\"name\":\"AttesterEpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"EpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"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\":[],\"name\":\"WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"computeAllStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"computeAllStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"currentAcceptingEpochByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentAcceptingEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"domainGenesisAccepted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"epochDurationByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochByL1BlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextPresentEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredAttesters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredCustodians\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"registerDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"removeAddressFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"rewardArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"rewardFromDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollOverEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"}],\"name\":\"slash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodian\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"unstakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"whitelistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"computeAllStakeForAcceptingEpoch(address)\":{\"params\":{\"domain\":\"The domain to compute total stake for\"}},\"getCustodianStake(address,uint256,address)\":{\"details\":\"gets the total stake for a given epoch for a given custodian\"},\"getCustodianStakeForAcceptingEpoch(address,address)\":{\"details\":\"gets the total stake for the accepting epoch for a given custodian\"},\"getNextAcceptingEpochWithException(address)\":{\"details\":\"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getNextPresentEpochWithException(address)\":{\"details\":\"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getStake(address,uint256,address,address)\":{\"details\":\"gets the stake for a given epoch for a given {attester,custodian} tuple\"},\"getStakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the stake for the accepting epoch for a given {attester,custodian} tuple\"},\"getUnstake(address,uint256,address,address)\":{\"details\":\"gets the unstake for a given epoch for a given {attester,custodian} tuple\"},\"getUnstakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the unstake for the accepting epoch for a given {attester,custodian} tuple\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"rewardArray(address[],uint256[],address[])\":{\"params\":{\"amounts\":\"The amounts to reward\",\"attesters\":\"The attesters to reward\",\"custodians\":\"The custodians of the token from which to reward the attesters \"}},\"rewardFromDomain(address,uint256,address)\":{\"params\":{\"amount\":\"The amount to reward\",\"attester\":\"The attester to reward\",\"custodian\":\"The custodian of the token from which to reward the attester, here it is the domain\"}},\"setAcceptingEpoch(address,uint256)\":{\"params\":{\"domain\":\"The domain address\",\"newEpoch\":\"The new accepting epoch value\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"EpochDurationNotSet()\":[{\"notice\":\"Error thrown when trying to get epoch but duration not set\"}]},\"kind\":\"user\",\"methods\":{\"computeAllStake(address,uint256)\":{\"notice\":\"Computes total stake across all custodians and attesters for an epoch\"},\"computeAllStakeForAcceptingEpoch(address)\":{\"notice\":\"Computes total stake across all custodians and attesters for the current accepting epoch\"},\"getEpochDuration(address)\":{\"notice\":\"Gets the epoch duration for the given domain\"},\"getNextAcceptingEpochWithException(address)\":{\"notice\":\"Gets the next accepting epoch number\"},\"getNextPresentEpochWithException(address)\":{\"notice\":\"Gets the next present epoch number\"},\"getRegisteredAttesters(address)\":{\"notice\":\"Gets all attesters who are registered for the given domain\"},\"getRegisteredCustodians(address)\":{\"notice\":\"Gets all custodians who are registered for the given domain\"},\"getStakedAttestersForAcceptingEpoch(address)\":{\"notice\":\"Gets all attesters who have stake in the current accepting epoch\"},\"registerDomain(uint256,address[])\":{\"notice\":\"Registers a domain and sets the epoch duration\"},\"rewardArray(address[],uint256[],address[])\":{\"notice\":\"An array of custodians reward an array of attesters\"},\"rewardFromDomain(address,uint256,address)\":{\"notice\":\"Domain rewards an attester\"},\"setAcceptingEpoch(address,uint256)\":{\"notice\":\"Sets the accepting epoch for a given domain\"},\"stake(address,address,uint256)\":{\"notice\":\"Stakes for the next epoch\"},\"whitelistAddress(address)\":{\"notice\":\"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MovementStaking.sol\":\"MovementStaking\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CustodianTransferAmountMismatch"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EpochDurationNotSet"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisAlreadyAccepted"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"StakeExceedsGenesisStake"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstake","type":"uint256","indexed":false}],"type":"event","name":"AttesterEpochRolledOver","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterStaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterUnstaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false}],"type":"event","name":"EpochRolledOver","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"computeAllStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"computeAllStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"currentAcceptingEpochByDomain","outputs":[{"internalType":"uint256","name":"currentAcceptingEpoch","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"domainGenesisAccepted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"epochDurationByDomain","outputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochByL1BlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextPresentEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredAttesters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredCustodians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"registerDomain"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAddressFromWhitelist"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"rewardArray"},{"inputs":[{"internalType":"address","name":"attester","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"rewardFromDomain"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"rollOverEpoch"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"address[]","name":"custodians","type":"address[]"},{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"refundAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"slash"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"contract IERC20","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"stake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodian","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unstake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"unstakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelistAddress"}],"devdoc":{"kind":"dev","methods":{"computeAllStakeForAcceptingEpoch(address)":{"params":{"domain":"The domain to compute total stake for"}},"getCustodianStake(address,uint256,address)":{"details":"gets the total stake for a given epoch for a given custodian"},"getCustodianStakeForAcceptingEpoch(address,address)":{"details":"gets the total stake for the accepting epoch for a given custodian"},"getNextAcceptingEpochWithException(address)":{"details":"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getNextPresentEpochWithException(address)":{"details":"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getStake(address,uint256,address,address)":{"details":"gets the stake for a given epoch for a given {attester,custodian} tuple"},"getStakeForAcceptingEpoch(address,address,address)":{"details":"gets the stake for the accepting epoch for a given {attester,custodian} tuple"},"getUnstake(address,uint256,address,address)":{"details":"gets the unstake for a given epoch for a given {attester,custodian} tuple"},"getUnstakeForAcceptingEpoch(address,address,address)":{"details":"gets the unstake for the accepting epoch for a given {attester,custodian} tuple"},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"rewardArray(address[],uint256[],address[])":{"params":{"amounts":"The amounts to reward","attesters":"The attesters to reward","custodians":"The custodians of the token from which to reward the attesters "}},"rewardFromDomain(address,uint256,address)":{"params":{"amount":"The amount to reward","attester":"The attester to reward","custodian":"The custodian of the token from which to reward the attester, here it is the domain"}},"setAcceptingEpoch(address,uint256)":{"params":{"domain":"The domain address","newEpoch":"The new accepting epoch value"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"computeAllStake(address,uint256)":{"notice":"Computes total stake across all custodians and attesters for an epoch"},"computeAllStakeForAcceptingEpoch(address)":{"notice":"Computes total stake across all custodians and attesters for the current accepting epoch"},"getEpochDuration(address)":{"notice":"Gets the epoch duration for the given domain"},"getNextAcceptingEpochWithException(address)":{"notice":"Gets the next accepting epoch number"},"getNextPresentEpochWithException(address)":{"notice":"Gets the next present epoch number"},"getRegisteredAttesters(address)":{"notice":"Gets all attesters who are registered for the given domain"},"getRegisteredCustodians(address)":{"notice":"Gets all custodians who are registered for the given domain"},"getStakedAttestersForAcceptingEpoch(address)":{"notice":"Gets all attesters who have stake in the current accepting epoch"},"registerDomain(uint256,address[])":{"notice":"Registers a domain and sets the epoch duration"},"rewardArray(address[],uint256[],address[])":{"notice":"An array of custodians reward an array of attesters"},"rewardFromDomain(address,uint256,address)":{"notice":"Domain rewards an attester"},"setAcceptingEpoch(address,uint256)":{"notice":"Sets the accepting epoch for a given domain"},"stake(address,address,uint256)":{"notice":"Stakes for the next epoch"},"whitelistAddress(address)":{"notice":"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/staking/MovementStaking.sol":"MovementStaking"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":111} \ No newline at end of file +{"abi":[{"type":"function","name":"DEFAULT_ADMIN_ROLE","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":"WHITELIST_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"computeAllStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"computeAllStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"currentAcceptingEpochByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"currentAcceptingEpoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"domainGenesisAccepted","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"epochDurationByDomain","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochByL1BlockTime","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextPresentEpochWithException","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredAttesters","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRegisteredCustodians","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getUnstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getUnstakeForAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[{"name":"_token","type":"address","internalType":"contract IERC20"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registerDomain","inputs":[{"name":"epochDuration","type":"uint256","internalType":"uint256"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"removeAddressFromWhitelist","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardArray","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"custodians","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardFromDomain","inputs":[{"name":"attester","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rollOverEpoch","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"slash","inputs":[{"name":"custodians","type":"address[]","internalType":"address[]"},{"name":"attesters","type":"address[]","internalType":"address[]"},{"name":"amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"refundAmounts","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"contract IERC20"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakesByDomainEpochCustodian","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"stakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"unstake","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"custodian","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unstakesByDomainEpochCustodianAttester","inputs":[{"name":"domain","type":"address","internalType":"address"},{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"whitelistAddress","inputs":[{"name":"addr","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"AttesterEpochRolledOver","inputs":[{"name":"attester","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"unstake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterStaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"AttesterUnstaked","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"custodian","type":"address","indexed":true,"internalType":"address"},{"name":"attester","type":"address","indexed":false,"internalType":"address"},{"name":"stake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"EpochRolledOver","inputs":[{"name":"domain","type":"address","indexed":true,"internalType":"address"},{"name":"epoch","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"CustodianTransferAmountMismatch","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"EpochDurationNotSet","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"GenesisAlreadyAccepted","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"StakeExceedsGenesisStake","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b5060016009556080516132f161004260003960008181611f2801528181611f51015261209501526132f16000f3fe6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;1171:4:21;1128:48;;766:27108:111;;;;;;;;;-1:-1:-1;1857:1:57;2061:7;:21;766:27108:111;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106102ae5760003560e01c80635e00bf4611610175578063a78d1fef116100dc578063c4d66de811610095578063d547741f1161006f578063d547741f146108e6578063d980b40d14610906578063e6e3fb3a14610926578063fc0c546a1461096d57600080fd5b8063c4d66de814610876578063d1ba90ff14610896578063d37304f8146108c657600080fd5b8063a78d1fef14610796578063a885c975146107b6578063a887b71c146107d6578063ad3cb1cc146107eb578063b1de97f714610829578063bf6eac2f1461085657600080fd5b806386af70d11161012e57806386af70d1146106ce57806391d148541461070c57806392a2ebf31461072c57806393dfb85c146107415780639db92f6814610761578063a217fddf1461078157600080fd5b80635e00bf461461061757806360829f8a14610637578063771fcfc4146106575780637a997ab7146106775780637d93768b146106995780638129fc1c146106b957600080fd5b806336568abe116102195780634f1ef286116101d25780634f1ef2861461055957806352d1902d1461056c57806355bdbe4c14610581578063574663a9146105a157806357dd6a94146105c15780635c534359146105e157600080fd5b806336568abe1461048c5780633bccf635146104ac5780633debeadc146104d957806341566585146104f95780634234a479146105195780634e76a1391461053957600080fd5b8063248a9ca31161026b578063248a9ca3146103cc57806324fdfddf146103ec578063286dd3f51461040c5780632f2ff15d1461042c578063341d5ef51461044c57806334eada3a1461046c57600080fd5b806301ffc9a7146102b35780630c8f522f146102e85780630ce52af51461033d5780631789aeb41461035d5780631dc8b9491461038a57806322fceb75146103ac575b600080fd5b3480156102bf57600080fd5b506102d36102ce366004612bc9565b6109a5565b60405190151581526020015b60405180910390f35b3480156102f457600080fd5b5061032f610303366004612c08565b600560209081526000948552604080862082529385528385208152918452828420909152825290205481565b6040519081526020016102df565b34801561034957600080fd5b5061032f610358366004612c5b565b6109dc565b34801561036957600080fd5b5061037d610378366004612c9d565b610a12565b6040516102df9190612cba565b34801561039657600080fd5b506103aa6103a5366004612cfb565b610b00565b005b3480156103b857600080fd5b5061032f6103c7366004612c9d565b610c3d565b3480156103d857600080fd5b5061032f6103e7366004612d27565b610c58565b3480156103f857600080fd5b5061032f610407366004612c5b565b610c7a565b34801561041857600080fd5b506103aa610427366004612c9d565b610cf4565b34801561043857600080fd5b506103aa610447366004612d40565b610d1b565b34801561045857600080fd5b5061037d610467366004612c9d565b610d3d565b34801561047857600080fd5b5061032f610487366004612d70565b610e24565b34801561049857600080fd5b506103aa6104a7366004612d40565b610e42565b3480156104b857600080fd5b5061032f6104c7366004612c9d565b60016020526000908152604090205481565b3480156104e557600080fd5b5061032f6104f4366004612db0565b610e7a565b34801561050557600080fd5b506103aa610514366004612c9d565b610e8f565b34801561052557600080fd5b5061037d610534366004612c9d565b610eb2565b34801561054557600080fd5b506103aa610554366004612e29565b611008565b6103aa610567366004612ee2565b6110a6565b34801561057857600080fd5b5061032f6110c1565b34801561058d57600080fd5b5061032f61059c366004612cfb565b6110de565b3480156105ad57600080fd5b5061032f6105bc366004612c9d565b611177565b3480156105cd57600080fd5b5061032f6105dc366004612c9d565b611186565b3480156105ed57600080fd5b5061032f6105fc366004612c9d565b6001600160a01b031660009081526001602052604090205490565b34801561062357600080fd5b506103aa610632366004612c5b565b6111b7565b34801561064357600080fd5b506103aa610652366004612fab565b6111d5565b34801561066357600080fd5b5061032f610672366004612c9d565b61126b565b34801561068357600080fd5b5061032f60008051602061325c83398151915281565b3480156106a557600080fd5b5061032f6106b4366004612c08565b611284565b3480156106c557600080fd5b506103aa6112c2565b3480156106da57600080fd5b5061032f6106e9366004612c5b565b600760209081526000938452604080852082529284528284209052825290205481565b34801561071857600080fd5b506102d3610727366004612d40565b6113ce565b34801561073857600080fd5b506103aa611406565b34801561074d57600080fd5b5061032f61075c366004612c08565b6115a4565b34801561076d57600080fd5b5061032f61077c366004612db0565b6115e2565b34801561078d57600080fd5b5061032f600081565b3480156107a257600080fd5b5061032f6107b1366004612d70565b6115f7565b3480156107c257600080fd5b506103aa6107d1366004612fec565b61160d565b3480156107e257600080fd5b506103aa611831565b3480156107f757600080fd5b5061081c604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102df91906130e3565b34801561083557600080fd5b5061032f610844366004612c9d565b60026020526000908152604090205481565b34801561086257600080fd5b506103aa610871366004612fab565b611843565b34801561088257600080fd5b506103aa610891366004612c9d565b611a79565b3480156108a257600080fd5b506102d36108b1366004612c9d565b60086020526000908152604090205460ff1681565b3480156108d257600080fd5b506103aa6108e1366004613116565b611ba0565b3480156108f257600080fd5b506103aa610901366004612d40565b611c20565b34801561091257600080fd5b5061032f610921366004612c9d565b611c3c565b34801561093257600080fd5b5061032f610941366004612c08565b600660209081526000948552604080862082529385528385208152918452828420909152825290205481565b34801561097957600080fd5b5060005461098d906001600160a01b031681565b6040516001600160a01b0390911681526020016102df565b60006001600160e01b03198216637965db0b60e01b14806109d657506301ffc9a760e01b6001600160e01b03198316145b92915050565b6001600160a01b0380841660009081526007602090815260408083208684528252808320938516835292905220545b9392505050565b6001600160a01b038116600090815260036020526040812060609190610a3790611c97565b6001600160401b03811115610a4e57610a4e612ecc565b604051908082528060200260200182016040528015610a77578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600360205260409020610a9e90611c97565b811015610af9576001600160a01b0384166000908152600360205260409020610ac79082611ca1565b828281518110610ad957610ad9613161565b6001600160a01b0390921660209283029190910190910152600101610a7d565b5092915050565b610b0982611c3c565b811115610b6f5760405162461bcd60e51b815260206004820152602960248201527f4e45575f45504f43485f4d5553545f42455f4c4553535f5448414e5f5052455360448201526808a9ca8be8aa09e86960bb1b60648201526084015b60405180910390fd5b610b7882610c3d565b8111610bda5760405162461bcd60e51b815260206004820152602b60248201527f4e45575f45504f43485f4d5553545f42455f4849474845525f5448414e5f435560448201526a0a4a48a9ca8be8aa09e86960ab1b6064820152608401610b66565b336001600160a01b03831614610c215760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610b66565b6001600160a01b03909116600090815260026020526040902055565b6001600160a01b031660009081526002602052604090205490565b600090815260008051602061329c833981519152602052604090206001015490565b600080805b6001600160a01b0386166000908152600460205260409020610ca090611c97565b811015610ceb576001600160a01b0386166000908152600460205260409020610cd79087908790610cd19085611ca1565b876115a4565b610ce1908361318d565b9150600101610c7f565b50949350505050565b6000610cff81611cad565b610d1760008051602061325c83398151915283611c20565b5050565b610d2482610c58565b610d2d81611cad565b610d378383611cba565b50505050565b6001600160a01b038116600090815260046020526040812060609190610d6290611c97565b6001600160401b03811115610d7957610d79612ecc565b604051908082528060200260200182016040528015610da2578160200160208202803683370190505b50905060005b6001600160a01b0384166000908152600460205260409020610dc990611c97565b811015610af9576001600160a01b0384166000908152600460205260409020610df29082611ca1565b828281518110610e0457610e04613161565b6001600160a01b0390921660209283029190910190910152600101610da8565b6000610e3a84610e3386610c3d565b8585611284565b949350505050565b6001600160a01b0381163314610e6b5760405163334bd91960e11b815260040160405180910390fd5b610e758282611d5f565b505050565b6000610a0b83610e8985610c3d565b84610c7a565b6000610e9a81611cad565b610d1760008051602061325c83398151915283610d1b565b6001600160a01b038116600090815260036020526040812060609190610ed790611c97565b90506000805b82811015610f32576001600160a01b0385166000908152600360205260408120610f079083611ca1565b90506000610f158783610e7a565b1115610f295782610f25816131a0565b9350505b50600101610edd565b506000816001600160401b03811115610f4d57610f4d612ecc565b604051908082528060200260200182016040528015610f76578160200160208202803683370190505b5090506000805b84811015610ffd576001600160a01b0387166000908152600360205260408120610fa79083611ca1565b90506000610fb58983610e7a565b1115610ff45780848481518110610fce57610fce613161565b6001600160a01b039092166020928302919091019091015282610ff0816131a0565b9350505b50600101610f7d565b509095945050505050565b611010611ddb565b60005b858110156110935761108b3388888481811061103157611031613161565b90506020020160208101906110469190612c9d565b85858581811061105857611058613161565b905060200201602081019061106d9190612c9d565b88888681811061107f5761107f613161565b90506020020135611e05565b600101611013565b5061109e6001600955565b505050505050565b6110ae611f1d565b6110b782611fc2565b610d178282611fcd565b60006110cb61208a565b5060008051602061327c83398151915290565b6000806110ea84610d3d565b905060006110f785610a12565b90506000805b835181101561116d5760005b835181101561116457611150888887858151811061112957611129613161565b602002602001015187858151811061114357611143613161565b60200260200101516115a4565b61115a908461318d565b9250600101611109565b506001016110fd565b5095945050505050565b60006109d68261059c84610c3d565b600061119182610c3d565b156111af5761119f82611c3c565b6111aa90600161318d565b6109d6565b600092915050565b6111bf611ddb565b6111cb33848385611e05565b610e756001600955565b60008051602061325c8339815191526111ed81611cad565b6111f5611ddb565b61120a846112028661126b565b8533866120d3565b826001600160a01b031661121d8561126b565b60408051338152602081018690526001600160a01b038816917fd41c64546a5c34c283150998874c7ee0412c8954f57aef484c681f6e137827df910160405180910390a4610d376001600955565b600061127682610c3d565b156111af5761119f82610c3d565b6001600160a01b0393841660009081526006602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113075750825b90506000826001600160401b031660011480156113235750303b155b905081158015611331575080155b1561134f5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561137957845460ff60401b1916600160401b1785555b611381612128565b83156113c757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600091825260008051602061329c833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61140e611ddb565b3360008181526008602052604090205460ff161561143e5760405162fe178760e01b815260040160405180910390fd5b6001600160a01b0381166000908152600860209081526040808320805460ff19166001908117909155909152902054611479576114796131b9565b61148281611c3c565b6001600160a01b0382166000908152600260205260408120919091555b6001600160a01b03821660009081526003602052604090206114c090611c97565b811015611596576001600160a01b03821660009081526003602052604081206114e99083611ca1565b905060005b6001600160a01b038416600090815260046020526040902061150f90611c97565b81101561158c576001600160a01b03841660009081526004602052604081206115389083611ca1565b9050600061154986600084876115a4565b9050600061155687610c3d565b111561158257600061156787610c3d565b1115611582576115828661157a88610c3d565b848785612138565b50506001016114ee565b505060010161149f565b50506115a26001600955565b565b6001600160a01b0393841660009081526005602090815260408083209583529481528482209386168252928352838120919094168452905290205490565b6000610a0b836115f185610c3d565b846109dc565b6000610e3a8461160686610c3d565b85856115a4565b611615611ddb565b60005b8581101561181c5760006116e06116a1336116538b8b8781811061163e5761163e613161565b90506020020160208101906103c79190612c9d565b8d8d8781811061166557611665613161565b905060200201602081019061167a9190612c9d565b8c8c8881811061168c5761168c613161565b905060200201602081019061075c9190612c9d565b6116db8888868181106116b6576116b6613161565b905060200201358787878181106116cf576116cf613161565b905060200201356121c5565b6121c5565b905061173a308989858181106116f8576116f8613161565b905060200201602081019061170d9190612c9d565b8c8c8681811061171f5761171f613161565b90506020020160208101906117349190612c9d565b846121d5565b6117b33361174733610c3d565b8c8c8681811061175957611759613161565b905060200201602081019061176e9190612c9d565b8b8b8781811061178057611780613161565b90506020020160208101906117959190612c9d565b8a8a888181106117a7576117a7613161565b90506020020135612244565b611813336117c033610c3d565b8c8c868181106117d2576117d2613161565b90506020020160208101906117e79190612c9d565b8b8b878181106117f9576117f9613161565b905060200201602081019061180e9190612c9d565b612285565b50600101611618565b506118276001600955565b5050505050505050565b6115a23361183e33610c3d565b6122fb565b60008051602061325c83398151915261185b81611cad565b611863611ddb565b6001600160a01b0384166000908152600360205260409020611885903361241f565b50600080546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156118cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118f391906131cf565b6040516323b872dd60e01b8152336004820152306024820152604481018590529091506001600160a01b038516906323b872dd906064016020604051808303816000875af1158015611949573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061196d91906131e8565b50611978838261318d565b6000546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156119c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119e491906131cf565b14611a0257604051631910d68360e21b815260040160405180910390fd5b611a1785611a0f8761126b565b863387612138565b836001600160a01b0316611a2a8661126b565b60408051338152602081018790526001600160a01b038916917f7be65c2ae4d3c544de23b1db5bea4d541c02b93a5f4302852f4dc9880e0cb554910160405180910390a450610d376001600955565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611abe5750825b90506000826001600160401b03166001148015611ada5750303b155b905081158015611ae8575080155b15611b065760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611b3057845460ff60401b1916600160401b1785555b611b38612434565b600080546001600160a01b0319166001600160a01b038816179055831561109e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050565b611ba8611ddb565b3360008181526001602052604081208590555b82811015611c1457611c0b848483818110611bd857611bd8613161565b9050602002016020810190611bed9190612c9d565b6001600160a01b03841660009081526004602052604090209061241f565b50600101611bbb565b5050610e756001600955565b611c2982610c58565b611c3281611cad565b610d378383611d5f565b6001600160a01b0381166000908152600160205260408120548103611c745760405163143c378b60e01b815260040160405180910390fd5b6001600160a01b0382166000908152600160205260409020546109d6904261320a565b60006109d6825490565b6000610a0b8383612447565b611cb78133612471565b50565b600060008051602061329c833981519152611cd584846113ce565b611d55576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055611d0b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506109d6565b60009150506109d6565b600060008051602061329c833981519152611d7a84846113ce565b15611d55576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506109d6565b600260095403611dfe57604051633ee5aeb560e01b815260040160405180910390fd5b6002600955565b303303611e4a5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b03838116911614611e9d5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b6000546040516323b872dd60e01b81526001600160a01b038681166004830152858116602483015260448201849052909116906323b872dd906064015b6020604051808303816000875af1158015611ef9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c791906131e8565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611fa457507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611f9860008051602061327c833981519152546001600160a01b031690565b6001600160a01b031614155b156115a25760405163703e46dd60e11b815260040160405180910390fd5b6000610d1781611cad565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015612027575060408051601f3d908101601f19168201909252612024918101906131cf565b60015b61204f57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610b66565b60008051602061327c833981519152811461208057604051632a87526960e21b815260048101829052602401610b66565b610e7583836124aa565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115a25760405163703e46dd60e11b815260040160405180910390fd5b6001600160a01b0380861660009081526006602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061211c90849061318d565b90915550505050505050565b612130612500565b6115a2612434565b6001600160a01b0380861660009081526005602090815260408083208884528252808320878516845282528083209386168352929052908120805483929061218190849061318d565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061318d565b6000828218828410028218610a0b565b306001600160a01b03851603612217576000546001600160a01b0380841691160361220b5761220684848484612549565b610d37565b61220684848484612637565b6000546001600160a01b038084169116036122385761220684848484611e05565b610d37848484846127c8565b836000612253878387876115a4565b90508281101561226f5761226a87838787856128a2565b61227c565b61227c87838787876128a2565b50505050505050565b6000612293858585856115a4565b905060006122a285600161318d565b905060006122b287838787611284565b90508281111561227c576001600160a01b0380881660009081526006602090815260408083208684528252808320848a168452825280832093881683529290522083905561227c565b60005b6001600160a01b038316600090815260036020526040902061231f90611c97565b8110156123b8576001600160a01b03831660009081526003602052604081206123489083611ca1565b905060005b6001600160a01b038516600090815260046020526040902061236e90611c97565b8110156123ae576001600160a01b03851660009081526004602052604081206123979083611ca1565b90506123a58686838661292f565b5060010161234d565b50506001016122fe565b506123c481600161318d565b6001600160a01b038316600081815260026020526040908190209290925590517fb693195b5ff3e376f8b562486abc516e10fe2467b75f0e4165e79cf4ab70dc41906124139084815260200190565b60405180910390a25050565b6000610a0b836001600160a01b0384166129fb565b61243c612500565b611cb7600033611cba565b600082600001828154811061245e5761245e613161565b9060005260206000200154905092915050565b61247b82826113ce565b610d175760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610b66565b6124b382612a4a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a28051156124f857610e758282612aaf565b610d17612b25565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166115a257604051631afcd79f60e31b815260040160405180910390fd5b6001600160a01b03841630146125ab5760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152603160f81b6064820152608401610b66565b6000546001600160a01b038381169116146125fe5760405162461bcd60e51b815260206004820152601360248201527226bab9ba103ab9b2903130b9b2903a37b5b2b760691b6044820152606401610b66565b60005460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb90604401611eda565b6001600160a01b03841630146126995760405162461bcd60e51b815260206004820152602160248201527f4f6e6c7920636f6e74726163742063616e2063616c6c206469726563746c79206044820152601960f91b6064820152608401610b66565b6000546001600160a01b038084169116036126f15760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60005460405163095ea7b360e01b81526001600160a01b038481166004830152602482018490529091169063095ea7b3906044016020604051808303816000875af1158015612744573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061276891906131e8565b506040516318950c7160e01b81526001600160a01b038481166004830152602482018390528316906318950c71906044015b600060405180830381600087803b1580156127b457600080fd5b505af1158015611827573d6000803e3d6000fd5b30330361280d5760405162461bcd60e51b81526020600482015260136024820152724f6e6c792065787465726e616c2063616c6c7360681b6044820152606401610b66565b6000546001600160a01b038084169116036128655760405162461bcd60e51b815260206004820152601860248201527726bab9ba103ab9b29031bab9ba37b234b0b7103a37b5b2b760411b6044820152606401610b66565b60405163c4652d8360e01b81526001600160a01b03858116600483015284811660248301526044820183905283169063c4652d839060640161279a565b6001600160a01b038086166000908152600560209081526040808320888452825280832087851684528252808320938616835292905290812080548392906128eb90849061322c565b90915550506001600160a01b03808616600090815260076020908152604080832088845282528083209387168352929052908120805483929061211c90849061322c565b600061293d858585856115a4565b905060006129578661295087600161318d565b8686611284565b9050818111156129645750805b6000612970828461322c565b90506129898761298188600161318d565b878785612138565b811561299b5761299b30858785612549565b846001600160a01b031686856001600160a01b03167f3ddb7f725ac69363a1df8296c965af4d268f31b082480dcd8419d284fb7fd34286866040516129ea929190918252602082015260400190565b60405180910390a450505050505050565b6000818152600183016020526040812054612a42575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556109d6565b5060006109d6565b806001600160a01b03163b600003612a8057604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610b66565b60008051602061327c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b031684604051612acc919061323f565b600060405180830381855af49150503d8060008114612b07576040519150601f19603f3d011682016040523d82523d6000602084013e612b0c565b606091505b5091509150612b1c858383612b44565b95945050505050565b34156115a25760405163b398979f60e01b815260040160405180910390fd5b606082612b5957612b5482612ba0565b610a0b565b8151158015612b7057506001600160a01b0384163b155b15612b9957604051639996b31560e01b81526001600160a01b0385166004820152602401610b66565b5080610a0b565b805115612bb05780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b600060208284031215612bdb57600080fd5b81356001600160e01b031981168114610a0b57600080fd5b6001600160a01b0381168114611cb757600080fd5b60008060008060808587031215612c1e57600080fd5b8435612c2981612bf3565b9350602085013592506040850135612c4081612bf3565b91506060850135612c5081612bf3565b939692955090935050565b600080600060608486031215612c7057600080fd5b8335612c7b81612bf3565b9250602084013591506040840135612c9281612bf3565b809150509250925092565b600060208284031215612caf57600080fd5b8135610a0b81612bf3565b602080825282518282018190526000918401906040840190835b81811015610ffd5783516001600160a01b0316835260209384019390920191600101612cd4565b60008060408385031215612d0e57600080fd5b8235612d1981612bf3565b946020939093013593505050565b600060208284031215612d3957600080fd5b5035919050565b60008060408385031215612d5357600080fd5b823591506020830135612d6581612bf3565b809150509250929050565b600080600060608486031215612d8557600080fd5b8335612d9081612bf3565b92506020840135612da081612bf3565b91506040840135612c9281612bf3565b60008060408385031215612dc357600080fd5b8235612dce81612bf3565b91506020830135612d6581612bf3565b60008083601f840112612df057600080fd5b5081356001600160401b03811115612e0757600080fd5b6020830191508360208260051b8501011115612e2257600080fd5b9250929050565b60008060008060008060608789031215612e4257600080fd5b86356001600160401b03811115612e5857600080fd5b612e6489828a01612dde565b90975095505060208701356001600160401b03811115612e8357600080fd5b612e8f89828a01612dde565b90955093505060408701356001600160401b03811115612eae57600080fd5b612eba89828a01612dde565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215612ef557600080fd5b8235612f0081612bf3565b915060208301356001600160401b03811115612f1b57600080fd5b8301601f81018513612f2c57600080fd5b80356001600160401b03811115612f4557612f45612ecc565b604051601f8201601f19908116603f011681016001600160401b0381118282101715612f7357612f73612ecc565b604052818152828201602001871015612f8b57600080fd5b816020840160208301376000602083830101528093505050509250929050565b600080600060608486031215612fc057600080fd5b8335612fcb81612bf3565b92506020840135612fdb81612bf3565b929592945050506040919091013590565b6000806000806000806000806080898b03121561300857600080fd5b88356001600160401b0381111561301e57600080fd5b61302a8b828c01612dde565b90995097505060208901356001600160401b0381111561304957600080fd5b6130558b828c01612dde565b90975095505060408901356001600160401b0381111561307457600080fd5b6130808b828c01612dde565b90955093505060608901356001600160401b0381111561309f57600080fd5b6130ab8b828c01612dde565b999c989b5096995094979396929594505050565b60005b838110156130da5781810151838201526020016130c2565b50506000910152565b60208152600082518060208401526131028160408501602087016130bf565b601f01601f19169190910160400192915050565b60008060006040848603121561312b57600080fd5b8335925060208401356001600160401b0381111561314857600080fd5b61315486828701612dde565b9497909650939450505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156109d6576109d6613177565b6000600182016131b2576131b2613177565b5060010190565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156131e157600080fd5b5051919050565b6000602082840312156131fa57600080fd5b81518015158114610a0b57600080fd5b60008261322757634e487b7160e01b600052601260045260246000fd5b500490565b818103818111156109d6576109d6613177565b600082516132518184602087016130bf565b919091019291505056fedc72ed553f2544c34465af23b847953efeb813428162d767f9ba5f4013be6760360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220409e4fa85a567670d7b68d3ae8bb2e8baafc4fd70394c21ecdc96859cc9df63764736f6c634300081a0033","sourceMap":"766:27108:111:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;1474:208:112;;;;;;;;;;-1:-1:-1;1474:208:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1434:25:140;;;1422:2;1407:18;1474:208:112;1288:177:140;10872:215:111;;;;;;;;;;-1:-1:-1;10872:215:111;;;;;:::i;:::-;;:::i;2321:419::-;;;;;;;;;;-1:-1:-1;2321:419:111;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;4287:406::-;;;;;;;;;;-1:-1:-1;4287:406:111;;;;;:::i;:::-;;:::i;:::-;;8307:134;;;;;;;;;;-1:-1:-1;8307:134:111;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;11409:381:111:-;;;;;;;;;;-1:-1:-1;11409:381:111;;;;;:::i;:::-;;:::i;26739:151::-;;;;;;;;;;-1:-1:-1;26739:151:111;;;;;:::i;:::-;;:::i;5246:136:19:-;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;1686:554:111:-;;;;;;;;;;-1:-1:-1;1686:554:111;;;;;:::i;:::-;;:::i;10462:330::-;;;;;;;;;;-1:-1:-1;10462:330:111;;;;;:::i;:::-;;:::i;6348:245:19:-;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;650:77:112:-;;;;;;;;;;-1:-1:-1;650:77:112;;;;;:::i;:::-;;;;;;;;;;;;;;11796:192:111;;;;;;;;;;-1:-1:-1;11796:192:111;;;;;:::i;:::-;;:::i;26593:140::-;;;;;;;;;;-1:-1:-1;26593:140:111;;;;;:::i;:::-;;:::i;2827:1107::-;;;;;;;;;;-1:-1:-1;2827:1107:111;;;;;:::i;:::-;;:::i;25966:457::-;;;;;;;;;;-1:-1:-1;25966:457:111;;;;;:::i;:::-;;:::i;4161:214:21:-;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;26982:542:111:-;;;;;;;;;;-1:-1:-1;26982:542:111;;;;;:::i;:::-;;:::i;27695:176::-;;;;;;;;;;-1:-1:-1;27695:176:111;;;;;:::i;:::-;;:::i;9069:182::-;;;;;;;;;;-1:-1:-1;9069:182:111;;;;;:::i;:::-;;:::i;4001:125::-;;;;;;;;;;-1:-1:-1;4001:125:111;;;;;:::i;:::-;-1:-1:-1;;;;;4090:29:111;4064:7;4090:29;;;:21;:29;;;;;;;4001:125;25461:244;;;;;;;;;;-1:-1:-1;25461:244:111;;;;;:::i;:::-;;:::i;13972:972::-;;;;;;;;;;-1:-1:-1;13972:972:111;;;;;:::i;:::-;;:::i;8661:180::-;;;;;;;;;;-1:-1:-1;8661:180:111;;;;;:::i;:::-;;:::i;2462:68:112:-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2462:68:112;;10109:254:111;;;;;;;;;;-1:-1:-1;10109:254:111;;;;;:::i;:::-;;:::i;514:86:113:-;;;;;;;;;;;;;:::i;2186:152:112:-;;;;;;;;;;-1:-1:-1;2186:152:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4699:1563:111:-;;;;;;;;;;;;;:::i;9342:250::-;;;;;;;;;;-1:-1:-1;9342:250:111;;;;;:::i;:::-;;:::i;11173:230::-;;;;;;;;;;-1:-1:-1;11173:230:111;;;;;:::i;:::-;;:::i;2317:49:19:-;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;9689:326:111;;;;;;;;;;-1:-1:-1;9689:326:111;;;;;:::i;:::-;;:::i;19744:1588::-;;;;;;;;;;-1:-1:-1;19744:1588:111;;;;;:::i;:::-;;:::i;17307:108::-;;;;;;;;;;;;;:::i;1819:58:21:-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;977:93:112:-;;;;;;;;;;-1:-1:-1;977:93:112;;;;;:::i;:::-;;;;;;;;;;;;;;12036:1885:111;;;;;;;;;;-1:-1:-1;12036:1885:111;;;;;:::i;:::-;;:::i;1051:125::-;;;;;;;;;;-1:-1:-1;1051:125:111;;;;;:::i;:::-;;:::i;2345:60:112:-;;;;;;;;;;-1:-1:-1;2345:60:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;1245:359:111;;;;;;;;;;-1:-1:-1;1245:359:111;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;8002:226:111:-;;;;;;;;;;-1:-1:-1;8002:226:111;;;;;:::i;:::-;;:::i;1832:210:112:-;;;;;;;;;;-1:-1:-1;1832:210:112;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;471:19;;;;;;;;;;-1:-1:-1;471:19:112;;;;-1:-1:-1;;;;;471:19:112;;;;;;-1:-1:-1;;;;;11791:32:140;;;11773:51;;11761:2;11746:18;471:19:112;11611:219:140;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;10872:215:111:-;-1:-1:-1;;;;;11026:36:111;;;11000:7;11026:36;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;10872:215;;;;;;:::o;2321:419::-;-1:-1:-1;;;;;2488:35:111;;2432:26;2488:35;;;:27;:35;;;;;2404:16;;2432:26;2488:44;;:42;:44::i;:::-;-1:-1:-1;;;;;2461:81:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2461:81:111;;2432:110;;2557:9;2552:156;-1:-1:-1;;;;;2576:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;2572:1;:48;2552:156;;;-1:-1:-1;;;;;2656:35:111;;;;;;:27;:35;;;;;:41;;2695:1;2656:38;:41::i;:::-;2641:9;2651:1;2641:12;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2641:56:111;;;:12;;;;;;;;;;;:56;2622:3;;2552:156;;;-1:-1:-1;2724:9:111;2321:419;-1:-1:-1;;2321:419:111:o;4287:406::-;4387:38;4417:6;4387:21;:38::i;:::-;4375:8;:50;;4367:104;;;;-1:-1:-1;;;4367:104:111;;12169:2:140;4367:104:111;;;12151:21:140;12208:2;12188:18;;;12181:30;12247:34;12227:18;;;12220:62;-1:-1:-1;;;12298:18:140;;;12291:39;12347:19;;4367:104:111;;;;;;;;;4500:25;4518:6;4500:17;:25::i;:::-;4489:8;:36;4481:92;;;;-1:-1:-1;;;4481:92:111;;12579:2:140;4481:92:111;;;12561:21:140;12618:2;12598:18;;;12591:30;12657:34;12637:18;;;12630:62;-1:-1:-1;;;12708:18:140;;;12701:41;12759:19;;4481:92:111;12377:407:140;4481:92:111;4591:10;-1:-1:-1;;;;;4591:20:111;;;4583:45;;;;-1:-1:-1;;;4583:45:111;;12991:2:140;4583:45:111;;;12973:21:140;13030:2;13010:18;;;13003:30;-1:-1:-1;;;13049:18:140;;;13042:42;13101:18;;4583:45:111;12789:336:140;4583:45:111;-1:-1:-1;;;;;4638:37:111;;;;;;;:29;:37;;;;;:48;4287:406::o;8307:134::-;-1:-1:-1;;;;;8397:37:111;8371:7;8397:37;;;:29;:37;;;;;;;8307:134::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;11409:381:111:-;11505:7;;;11559:195;-1:-1:-1;;;;;11583:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;11579:1;:49;11559:195;;;-1:-1:-1;;;;;11690:36:111;;;;;;:28;:36;;;;;11666:77;;11675:6;;11683:5;;11690:42;;11730:1;11690:39;:42::i;:::-;11734:8;11666;:77::i;:::-;11649:94;;;;:::i;:::-;;-1:-1:-1;11630:3:111;;11559:195;;;-1:-1:-1;11770:13:111;11409:381;-1:-1:-1;;;;11409:381:111:o;26739:151::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26851:32:111::1;-1:-1:-1::0;;;;;;;;;;;26878:4:111::1;26851:10;:32::i;:::-;26739:151:::0;;:::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;1686:554:111:-;-1:-1:-1;;;;;1983:36:111;;1926:27;1983:36;;;:28;:36;;;;;1770:16;;1926:27;1983:45;;:43;:45::i;:::-;-1:-1:-1;;;;;1956:82:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1956:82:111;;1926:112;;2053:9;2048:159;-1:-1:-1;;;;;2072:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;2068:1;:49;2048:159;;;-1:-1:-1;;;;;2154:36:111;;;;;;:28;:36;;;;;:42;;2194:1;2154:39;:42::i;:::-;2138:10;2149:1;2138:13;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2138:58:111;;;:13;;;;;;;;;;;:58;2119:3;;2048:159;;10462:330;10603:7;10641:144;10669:6;10693:25;10711:6;10693:17;:25::i;:::-;10736:9;10763:8;10641:10;:144::i;:::-;10622:163;10462:330;-1:-1:-1;;;;10462:330:111:o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;11796:192:111:-;11894:7;11920:61;11937:6;11945:25;11963:6;11945:17;:25::i;:::-;11972:8;11920:16;:61::i;26593:140::-;2362:4:19;3191:16;2362:4;3191:10;:16::i;:::-;26695:31:111::1;-1:-1:-1::0;;;;;;;;;;;26721:4:111::1;26695:9;:31::i;2827:1107::-:0;-1:-1:-1;;;;;3022:35:111;;2997:22;3022:35;;;:27;:35;;;;;2923:16;;2997:22;3022:44;;:42;:44::i;:::-;2997:69;;3123:27;3169:9;3164:258;3188:14;3184:1;:18;3164:258;;;-1:-1:-1;;;;;3242:35:111;;3223:16;3242:35;;;:27;:35;;;;;:41;;3281:1;3242:38;:41::i;:::-;3223:60;;3355:1;3301:51;3335:6;3343:8;3301:33;:51::i;:::-;:55;3297:115;;;3376:21;;;;:::i;:::-;;;;3297:115;-1:-1:-1;3204:3:111;;3164:258;;;;3476:32;3525:19;-1:-1:-1;;;;;3511:34:111;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3511:34:111;;3476:69;;3555:19;3593:9;3588:307;3612:14;3608:1;:18;3588:307;;;-1:-1:-1;;;;;3666:35:111;;3647:16;3666:35;;;:27;:35;;;;;:41;;3705:1;3666:38;:41::i;:::-;3647:60;;3779:1;3725:51;3759:6;3767:8;3725:33;:51::i;:::-;:55;3721:164;;;3831:8;3800:15;3816:11;3800:28;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3800:39:111;;;:28;;;;;;;;;;;:39;3857:13;;;;:::i;:::-;;;;3721:164;-1:-1:-1;3628:3:111;;3588:307;;;-1:-1:-1;3912:15:111;;2827:1107;-1:-1:-1;;;;;2827:1107:111:o;25966:457::-;2500:21:57;:19;:21::i;:::-;26265:9:111::1;26260:157;26280:20:::0;;::::1;26260:157;;;26321:85;26354:10;26366:9;;26376:1;26366:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26380:10;;26391:1;26380:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;26395:7;;26403:1;26395:10;;;;;;;:::i;:::-;;;;;;;26321:32;:85::i;:::-;26302:3;;26260:157;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;25966:457:111;;;;;;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;26982:542:111:-;27081:7;27100:27;27130:31;27154:6;27130:23;:31::i;:::-;27100:61;;27171:26;27200:30;27223:6;27200:22;:30::i;:::-;27171:59;;27240:18;27278:9;27273:218;27297:10;:17;27293:1;:21;27273:218;;;27340:9;27335:146;27359:9;:16;27355:1;:20;27335:146;;;27414:52;27423:6;27431:5;27438:10;27449:1;27438:13;;;;;;;;:::i;:::-;;;;;;;27453:9;27463:1;27453:12;;;;;;;;:::i;:::-;;;;;;;27414:8;:52::i;:::-;27400:66;;;;:::i;:::-;;-1:-1:-1;27377:3:111;;27335:146;;;-1:-1:-1;27316:3:111;;27273:218;;;-1:-1:-1;27507:10:111;26982:542;-1:-1:-1;;;;;26982:542:111:o;27695:176::-;27788:7;27814:50;27830:6;27838:25;27856:6;27838:17;:25::i;9069:182::-;9148:7;9174:25;9192:6;9174:17;:25::i;:::-;:30;:70;;9211:29;9233:6;9211:21;:29::i;:::-;:33;;9243:1;9211:33;:::i;:::-;9174:70;;;9207:1;9167:77;9069:182;-1:-1:-1;;9069:182:111:o;25461:244::-;2500:21:57;:19;:21::i;:::-;25625:73:111::1;25658:10;25670:8;25680:9;25691:6;25625:32;:73::i;:::-;2542:20:57::0;1857:1;3068:7;:21;2888:208;13972:972:111;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;14448:304:111::2;14473:6;14633:42;14668:6;14633:34;:42::i;:::-;14689:9;14712:10;14736:6;14448:11;:304::i;:::-;14874:9;-1:-1:-1::0;;;;;14768:169:111::2;14818:42;14853:6;14818:34;:42::i;:::-;14768:169;::::0;;14897:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;14768:169:111;::::2;::::0;::::2;::::0;13679:18:140;14768:169:111::2;;;;;;;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;8661:180:111;8742:7;8768:25;8786:6;8768:17;:25::i;:::-;:30;:66;;8805:25;8823:6;8805:17;:25::i;10109:254::-;-1:-1:-1;;;;;10282:46:111;;;10256:7;10282:46;;;:38;:46;;;;;;;;:53;;;;;;;;;:64;;;;;;;;;;;:74;;;;;;;;;;;;10109:254::o;514:86:113:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;573:20:113::1;:18;:20::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;514:86:113:o;3732:207:19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4699:1563:111:-;2500:21:57;:19;:21::i;:::-;4779:10:111::1;4762:14;4804:29:::0;;;:21:::1;:29;::::0;;;;;::::1;;4800:66;;;4842:24;;-1:-1:-1::0;;;4842:24:111::1;;;;;;;;;;;4800:66;-1:-1:-1::0;;;;;4876:29:111;::::1;;::::0;;;:21:::1;:29;::::0;;;;;;;:36;;-1:-1:-1;;4876:36:111::1;4908:4;4876:36:::0;;::::1;::::0;;;4938:29;;;;;;4931:41:::1;;;;:::i;:::-;5094:29;5116:6;5094:21;:29::i;:::-;-1:-1:-1::0;;;;;5054:37:111;::::1;;::::0;;;:29:::1;:37;::::0;;;;:69;;;;5134:1122:::1;-1:-1:-1::0;;;;;5158:35:111;::::1;;::::0;;;:27:::1;:35;::::0;;;;:44:::1;::::0;:42:::1;:44::i;:::-;5154:1;:48;5134:1122;;;-1:-1:-1::0;;;;;5242:35:111;::::1;5223:16;5242:35:::0;;;:27:::1;:35;::::0;;;;:41:::1;::::0;5281:1;5242:38:::1;:41::i;:::-;5223:60;;5303:9;5298:952;-1:-1:-1::0;;;;;5322:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;:45:::1;::::0;:43:::1;:45::i;:::-;5318:1;:49;5298:952;;;-1:-1:-1::0;;;;;5412:36:111;::::1;5392:17;5412:36:::0;;;:28:::1;:36;::::0;;;;:42:::1;::::0;5452:1;5412:39:::1;:42::i;:::-;5392:62;;5531:21;5555:138;5585:6;5613:1;5636:9;5667:8;5555;:138::i;:::-;5531:162;;5907:1;5879:25;5897:6;5879:17;:25::i;:::-;:29;5875:365;;;5960:1;5932:25;5950:6;5932:17;:25::i;:::-;:29;5928:298;;;5985:222;6020:6;6052:25;6070:6;6052:17;:25::i;:::-;6103:9;6138:8;6172:13;5985:9;:222::i;:::-;-1:-1:-1::0;;5369:3:111::1;;5298:952;;;-1:-1:-1::0;;5204:3:111::1;;5134:1122;;;;4752:1510;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;4699:1563:111:o;9342:250::-;-1:-1:-1;;;;;9513:44:111;;;9487:7;9513:44;;;:36;:44;;;;;;;;:51;;;;;;;;;:62;;;;;;;;;;;:72;;;;;;;;;;;;9342:250::o;11173:230::-;11295:7;11333:63;11351:6;11359:25;11377:6;11359:17;:25::i;:::-;11386:9;11333:17;:63::i;9689:326::-;9828:7;9866:142;9892:6;9916:25;9934:6;9916:17;:25::i;:::-;9959:9;9986:8;9866;:142::i;19744:1588::-;2500:21:57;:19;:21::i;:::-;19955:9:111::1;19950:1376;19970:20:::0;;::::1;19950:1376;;;20238:20;20261:276;20287:180;20317:10;20349:31;20367:9;;20377:1;20367:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20349:31::-;20402:10;;20413:1;20402:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20437:9;;20447:1;20437:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;20287:180::-;20485:38;20494:7;;20502:1;20494:10;;;;;;;:::i;:::-;;;;;;;20506:13;;20520:1;20506:16;;;;;;;:::i;:::-;;;;;;;20485:8;:38::i;:::-;20261:8;:276::i;:::-;20238:299;;20551:238;20601:4;20702:9;;20712:1;20702:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20732:10;;20743:1;20732:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;20763:12;20551:24;:238::i;:::-;20948:189;20977:10;21005:29;21023:10;21005:17;:29::i;:::-;21052:10;;21063:1;21052:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21083:9;;21093:1;21083:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21113:7;;21121:1;21113:10;;;;;;;:::i;:::-;;;;;;;20948:11;:189::i;:::-;21152:163;21183:10;21211:29;21229:10;21211:17;:29::i;:::-;21258:10;;21269:1;21258:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21289:9;;21299:1;21289:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;21152:13;:163::i;:::-;-1:-1:-1::0;19992:3:111::1;;19950:1376;;;;2542:20:57::0;1857:1;3068:7;:21;2888:208;2542:20;19744:1588:111;;;;;;;;:::o;17307:108::-;17351:57;17366:10;17378:29;17396:10;17378:17;:29::i;:::-;17351:14;:57::i;12036:1885::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2500:21:57::1;:19;:21::i;:::-;-1:-1:-1::0;;;;;12241:35:111;::::2;;::::0;;;:27:::2;:35;::::0;;;;:51:::2;::::0;12281:10:::2;12241:39;:51::i;:::-;-1:-1:-1::0;12666:21:111::2;12690:5:::0;;:30:::2;::::0;-1:-1:-1;;;12690:30:111;;12714:4:::2;12690:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;12690:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;12690:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13009:57;::::0;-1:-1:-1;;;13009:57:111;;13032:10:::2;13009:57;::::0;::::2;14756:51:140::0;13052:4:111::2;14823:18:140::0;;;14816:60;14892:18;;;14885:34;;;12666:54:111;;-1:-1:-1;;;;;;13009:22:111;::::2;::::0;::::2;::::0;14729:18:140;;13009:57:111::2;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;13199:22:111::2;13215:6:::0;13199:13;:22:::2;:::i;:::-;13165:5;::::0;:30:::2;::::0;-1:-1:-1;;;13165:30:111;;13189:4:::2;13165:30;::::0;::::2;11773:51:140::0;-1:-1:-1;;;;;13165:5:111;;::::2;::::0;:15:::2;::::0;11746:18:140;;13165:30:111::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:56;13161:114;;13242:33;;-1:-1:-1::0;;;13242:33:111::2;;;;;;;;;;;13161:114;13352:311;13375:6;13535:42;13570:6;13535:34;:42::i;:::-;13599:9;13623:10;13647:6;13352:9;:311::i;:::-;13850:9;-1:-1:-1::0;;;;;13738:176:111::2;13786:42;13821:6;13786:34;:42::i;:::-;13738:176;::::0;;13874:10:::2;13706:51:140::0;;13788:2;13773:18;;13766:34;;;-1:-1:-1;;;;;13738:176:111;::::2;::::0;::::2;::::0;13679:18:140;13738:176:111::2;;;;;;;12178:1743;2542:20:57::1;1857:1:::0;3068:7;:21;2888:208;1051:125:111;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;1115:30:111::1;:28;:30::i;:::-;1155:5;:14:::0;;-1:-1:-1;;;;;;1155:14:111::1;-1:-1:-1::0;;;;;1155:14:111;::::1;;::::0;;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13964:50:140;;5142:14:20;;13952:2:140;13937:18;5142:14:20;;;;;;;4092:1081;;;;;1051:125:111;:::o;1245:359::-;2500:21:57;:19;:21::i;:::-;1394:10:111::1;1377:14;1414:29:::0;;;:21:::1;:29;::::0;;;;:45;;;1470:128:::1;1490:21:::0;;::::1;1470:128;;;1532:55;1573:10;;1584:1;1573:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;1532:36:111;::::1;;::::0;;;:28:::1;:36;::::0;;;;;:40:::1;:55::i;:::-;-1:-1:-1::0;1513:3:111::1;;1470:128;;;;1367:237;2542:20:57::0;1857:1;3068:7;:21;2888:208;5662:138:19;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;8002:226:111:-:0;-1:-1:-1;;;;;8093:29:111;;8070:7;8093:29;;;:21;:29;;;;;;:34;;8089:68;;8136:21;;-1:-1:-1;;;8136:21:111;;;;;;;;;;;8089:68;-1:-1:-1;;;;;8192:29:111;;;;;;:21;:29;;;;;;8174:47;;:15;:47;:::i;9090:115:67:-;9153:7;9179:19;9187:3;4556:18;;4474:107;9547:156;9621:7;9671:22;9675:3;9687:5;9671:3;:22::i;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;:::-;4148:103;:::o;7270:387::-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;2575:307:57;1899:1;2702:7;;:18;2698:86;;2743:30;;-1:-1:-1;;;2743:30:57;;;;;;;;;;;2698:86;1899:1;2858:7;:17;2575:307::o;24467:315:111:-;24625:4;24603:10;:27;24595:59;;;;-1:-1:-1;;;24595:59:111;;15636:2:140;24595:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24595:59:111;15434:343:140;24595:59:111;24680:5;;-1:-1:-1;;;;;24672:27:111;;;24680:5;;24672:27;24664:59;;;;-1:-1:-1;;;24664:59:111;;15984:2:140;24664:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;24664:59:111;15782:343:140;24664:59:111;24733:5;;:42;;-1:-1:-1;;;24733:42:111;;-1:-1:-1;;;;;14774:32:140;;;24733:42:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;24733:5:111;;;;:18;;14729::140;;24733:42:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4603:312:21:-;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;965:103:113;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;11791:32:140;;6518:60:21;;;11773:51:140;11746:18;;6518:60:21;11611:219:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1434:25:140;;;1407:18;;6317:34:21;1288:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;6945:261:111;-1:-1:-1;;;;;7115:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;;;:84;;7193:6;;7115:46;:84;;7193:6;;7115:84;:::i;:::-;;;;-1:-1:-1;;;;;;;6945:261:111:o;606:103:113:-;6931:20:20;:18;:20::i;:::-;672:30:113::1;:28;:30::i;6268:331:111:-:0;-1:-1:-1;;;;;6436:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6512:6;;6436:44;:82;;6512:6;;6436:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6528:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6586:6;;6528:36;:64;;6586:6;;6528:64;:::i;3371:111:64:-;3429:7;3066:5;;;3463;;;3065:36;3060:42;;3455:20;2825:294;21690:1458:111;21868:4;-1:-1:-1;;;;;21852:21:111;;;21848:1294;;21953:5;;-1:-1:-1;;;;;21945:27:111;;;21953:5;;21945:27;21941:413;;22068:67;22101:4;22107:8;22117:9;22128:6;22068:32;:67::i;:::-;21848:1294;;21941:413;22268:71;22305:4;22311:8;22321:9;22332:6;22268:36;:71::i;21848:1294::-;22752:5;;-1:-1:-1;;;;;22744:27:111;;;22752:5;;22744:27;22740:392;;22863:67;22896:4;22902:8;22912:9;22923:6;22863:32;:67::i;22740:392::-;23046:71;23083:4;23089:8;23099:9;23110:6;23046:36;:71::i;17722:796::-;17967:5;17945:19;18006:108;18028:6;17967:5;18073:9;18096:8;18006;:108::i;:::-;17982:132;;18223:6;18207:13;:22;18203:309;;;18245:163;18275:6;18299:11;18328:9;18355:8;18381:13;18245:12;:163::i;:::-;18203:309;;;18439:62;18452:6;18460:11;18473:9;18484:8;18494:6;18439:12;:62::i;:::-;17882:636;;17722:796;;;;;:::o;18850:888::-;19057:21;19081:102;19103:6;19123:5;19142:9;19165:8;19081;:102::i;:::-;19057:126;-1:-1:-1;19193:19:111;19215:9;:5;19223:1;19215:9;:::i;:::-;19193:31;;19234:23;19260:110;19284:6;19304:11;19329:9;19352:8;19260:10;:110::i;:::-;19234:136;;19403:13;19385:15;:31;19381:351;;;-1:-1:-1;;;;;7652:46:111;;;;;;;:38;:46;;;;;;;;:53;;;;;;;;:64;;;;;;;;;;:74;;;;;;;;;:83;;;19559:162;7482:260;16491:810;16720:9;16715:423;-1:-1:-1;;;;;16739:35:111;;;;;;:27;:35;;;;;:44;;:42;:44::i;:::-;16735:1;:48;16715:423;;;-1:-1:-1;;;;;16823:35:111;;16804:16;16823:35;;;:27;:35;;;;;:41;;16862:1;16823:38;:41::i;:::-;16804:60;;16884:9;16879:249;-1:-1:-1;;;;;16903:36:111;;;;;;:28;:36;;;;;:45;;:43;:45::i;:::-;16899:1;:49;16879:249;;;-1:-1:-1;;;;;16993:36:111;;16973:17;16993:36;;;:28;:36;;;;;:42;;17033:1;16993:39;:42::i;:::-;16973:62;;17054:59;17072:6;17080:11;17093:9;17104:8;17054:17;:59::i;:::-;-1:-1:-1;16950:3:111;;16879:249;;;-1:-1:-1;;16785:3:111;;16715:423;;;-1:-1:-1;17227:15:111;:11;17241:1;17227:15;:::i;:::-;-1:-1:-1;;;;;17187:37:111;;;;;;:29;:37;;;;;;;:55;;;;17258:36;;;;;;17282:11;1434:25:140;;1422:2;1407:18;;1288:177;17258:36:111;;;;;;;;16491:810;;:::o;8289:150:67:-;8359:4;8382:50;8387:3;-1:-1:-1;;;;;8407:23:67;;8382:4;:50::i;715:125:113:-;6931:20:20;:18;:20::i;:::-;791:42:113::1;2362:4:19;822:10:113;791;:42::i;4923:118:67:-:0;4990:7;5016:3;:11;;5028:5;5016:18;;;;;;;;:::i;:::-;;;;;;;;;5009:25;;4923:118;;;;:::o;4381:197:19:-;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;13724:32:140;;4514:47:19;;;13706:51:140;13773:18;;;13766:34;;;13679:18;;4514:47:19;13532:274:140;2264:344:40;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;23282:313:111;-1:-1:-1;;;;;23418:21:111;;23434:4;23418:21;23410:67;;;;-1:-1:-1;;;23410:67:111;;16800:2:140;23410:67:111;;;16782:21:140;16839:2;16819:18;;;16812:30;16878:34;16858:18;;;16851:62;-1:-1:-1;;;16929:18:140;;;16922:31;16970:19;;23410:67:111;16598:397:140;23410:67:111;23503:5;;-1:-1:-1;;;;;23495:27:111;;;23503:5;;23495:27;23487:59;;;;-1:-1:-1;;;23487:59:111;;15984:2:140;23487:59:111;;;15966:21:140;16023:2;16003:18;;;15996:30;-1:-1:-1;;;16042:18:140;;;16035:49;16101:18;;23487:59:111;15782:343:140;23487:59:111;23556:5;;:32;;-1:-1:-1;;;23556:32:111;;-1:-1:-1;;;;;13724:32:140;;;23556::111;;;13706:51:140;13773:18;;;13766:34;;;23556:5:111;;;;:14;;13679:18:140;;23556:32:111;13532:274:140;23664:394:111;-1:-1:-1;;;;;23804:21:111;;23820:4;23804:21;23796:67;;;;-1:-1:-1;;;23796:67:111;;17202:2:140;23796:67:111;;;17184:21:140;17241:2;17221:18;;;17214:30;17280:34;17260:18;;;17253:62;-1:-1:-1;;;17331:18:140;;;17324:31;17372:19;;23796:67:111;17000:397:140;23796:67:111;23889:5;;-1:-1:-1;;;;;23881:27:111;;;23889:5;;23881:27;23873:64;;;;-1:-1:-1;;;23873:64:111;;17604:2:140;23873:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;23873:64:111;17402:348:140;23873:64:111;23947:5;;:32;;-1:-1:-1;;;23947:32:111;;-1:-1:-1;;;;;13724:32:140;;;23947::111;;;13706:51:140;13773:18;;;13766:34;;;23947:5:111;;;;:13;;13679:18:140;;23947:32:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;23989:62:111;;-1:-1:-1;;;23989:62:111;;-1:-1:-1;;;;;13724:32:140;;;23989:62:111;;;13706:51:140;13773:18;;;13766:34;;;23989:44:111;;;;;13679:18:140;;23989:62:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24859:354;25021:4;24999:10;:27;24991:59;;;;-1:-1:-1;;;24991:59:111;;15636:2:140;24991:59:111;;;15618:21:140;15675:2;15655:18;;;15648:30;-1:-1:-1;;;15694:18:140;;;15687:49;15753:18;;24991:59:111;15434:343:140;24991:59:111;25076:5;;-1:-1:-1;;;;;25068:27:111;;;25076:5;;25068:27;25060:64;;;;-1:-1:-1;;;25060:64:111;;17604:2:140;25060:64:111;;;17586:21:140;17643:2;17623:18;;;17616:30;-1:-1:-1;;;17662:18:140;;;17655:54;17726:18;;25060:64:111;17402:348:140;25060:64:111;25134:72;;-1:-1:-1;;;25134:72:111;;-1:-1:-1;;;;;14774:32:140;;;25134:72:111;;;14756:51:140;14843:32;;;14823:18;;;14816:60;14892:18;;;14885:34;;;25134:48:111;;;;;14729:18:140;;25134:72:111;14554:371:140;6605:334:111;-1:-1:-1;;;;;6776:44:111;;;;;;;:36;:44;;;;;;;;:51;;;;;;;;:62;;;;;;;;;;:72;;;;;;;;;;;:82;;6852:6;;6776:44;:82;;6852:6;;6776:82;:::i;:::-;;;;-1:-1:-1;;;;;;;6868:36:111;;;;;;;:28;:36;;;;;;;;:43;;;;;;;;:54;;;;;;;;;;;:64;;6926:6;;6868:36;:64;;6926:6;;6868:64;:::i;15011:1474::-;15265:19;15287:108;15309:6;15329:11;15354:9;15377:8;15287;:108::i;:::-;15265:130;-1:-1:-1;15405:21:111;15429:114;15453:6;15473:15;:11;15487:1;15473:15;:::i;:::-;15502:9;15525:8;15429:10;:114::i;:::-;15405:138;;15573:11;15557:13;:27;15553:85;;;-1:-1:-1;15616:11:111;15553:85;15647:17;15667:27;15681:13;15667:11;:27;:::i;:::-;15647:47;-1:-1:-1;15705:66:111;15715:6;15723:15;:11;15737:1;15723:15;:::i;:::-;15740:9;15751:8;15761:9;15705;:66::i;:::-;16181:17;;16177:131;;16214:83;16255:4;16262:8;16272:9;16283:13;16214:32;:83::i;:::-;16407:9;-1:-1:-1;;;;;16323:155:111;16382:11;16360:8;-1:-1:-1;;;;;16323:155:111;;16430:11;16455:13;16323:155;;;;;;18062:25:140;;;18118:2;18103:18;;18096:34;18050:2;18035:18;;17888:248;16323:155:111;;;;;;;;15159:1326;;;15011:1474;;;;:::o;2241:406:67:-;2304:4;4360:21;;;:14;;;:21;;;;;;2320:321;;-1:-1:-1;2362:23:67;;;;;;;;:11;:23;;;;;;;;;;;;;2544:18;;2520:21;;;:14;;;:21;;;;;;:42;;;;2576:11;;2320:321;-1:-1:-1;2625:5:67;2618:12;;1671:281:40;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;11791:32:140;;1805:47:40;;;11773:51:140;11746:18;;1805:47:40;11611:219:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;11791:32:140;;4933:24:53;;;11773:51:140;11746:18;;4933:24:53;11611:219:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:131;-1:-1:-1;;;;;572:31:140;;562:42;;552:70;;618:1;615;608:12;633:650;719:6;727;735;743;796:3;784:9;775:7;771:23;767:33;764:53;;;813:1;810;803:12;764:53;852:9;839:23;871:31;896:5;871:31;:::i;:::-;921:5;-1:-1:-1;999:2:140;984:18;;971:32;;-1:-1:-1;1081:2:140;1066:18;;1053:32;1094:33;1053:32;1094:33;:::i;:::-;1146:7;-1:-1:-1;1205:2:140;1190:18;;1177:32;1218:33;1177:32;1218:33;:::i;:::-;633:650;;;;-1:-1:-1;633:650:140;;-1:-1:-1;;633:650:140:o;1470:508::-;1547:6;1555;1563;1616:2;1604:9;1595:7;1591:23;1587:32;1584:52;;;1632:1;1629;1622:12;1584:52;1671:9;1658:23;1690:31;1715:5;1690:31;:::i;:::-;1740:5;-1:-1:-1;1818:2:140;1803:18;;1790:32;;-1:-1:-1;1900:2:140;1885:18;;1872:32;1913:33;1872:32;1913:33;:::i;:::-;1965:7;1955:17;;;1470:508;;;;;:::o;1983:247::-;2042:6;2095:2;2083:9;2074:7;2070:23;2066:32;2063:52;;;2111:1;2108;2101:12;2063:52;2150:9;2137:23;2169:31;2194:5;2169:31;:::i;2235:637::-;2425:2;2437:21;;;2507:13;;2410:18;;;2529:22;;;2377:4;;2608:15;;;2582:2;2567:18;;;2377:4;2651:195;2665:6;2662:1;2659:13;2651:195;;;2730:13;;-1:-1:-1;;;;;2726:39:140;2714:52;;2795:2;2821:15;;;;2786:12;;;;2762:1;2680:9;2651:195;;2877:367;2945:6;2953;3006:2;2994:9;2985:7;2981:23;2977:32;2974:52;;;3022:1;3019;3012:12;2974:52;3061:9;3048:23;3080:31;3105:5;3080:31;:::i;:::-;3130:5;3208:2;3193:18;;;;3180:32;;-1:-1:-1;;;2877:367:140:o;3249:226::-;3308:6;3361:2;3349:9;3340:7;3336:23;3332:32;3329:52;;;3377:1;3374;3367:12;3329:52;-1:-1:-1;3422:23:140;;3249:226;-1:-1:-1;3249:226:140:o;3662:367::-;3730:6;3738;3791:2;3779:9;3770:7;3766:23;3762:32;3759:52;;;3807:1;3804;3797:12;3759:52;3852:23;;;-1:-1:-1;3951:2:140;3936:18;;3923:32;3964:33;3923:32;3964:33;:::i;:::-;4016:7;4006:17;;;3662:367;;;;;:::o;4034:529::-;4111:6;4119;4127;4180:2;4168:9;4159:7;4155:23;4151:32;4148:52;;;4196:1;4193;4186:12;4148:52;4235:9;4222:23;4254:31;4279:5;4254:31;:::i;:::-;4304:5;-1:-1:-1;4361:2:140;4346:18;;4333:32;4374:33;4333:32;4374:33;:::i;:::-;4426:7;-1:-1:-1;4485:2:140;4470:18;;4457:32;4498:33;4457:32;4498:33;:::i;4568:388::-;4636:6;4644;4697:2;4685:9;4676:7;4672:23;4668:32;4665:52;;;4713:1;4710;4703:12;4665:52;4752:9;4739:23;4771:31;4796:5;4771:31;:::i;:::-;4821:5;-1:-1:-1;4878:2:140;4863:18;;4850:32;4891:33;4850:32;4891:33;:::i;4961:367::-;5024:8;5034:6;5088:3;5081:4;5073:6;5069:17;5065:27;5055:55;;5106:1;5103;5096:12;5055:55;-1:-1:-1;5129:20:140;;-1:-1:-1;;;;;5161:30:140;;5158:50;;;5204:1;5201;5194:12;5158:50;5241:4;5233:6;5229:17;5217:29;;5301:3;5294:4;5284:6;5281:1;5277:14;5269:6;5265:27;5261:38;5258:47;5255:67;;;5318:1;5315;5308:12;5255:67;4961:367;;;;;:::o;5333:1099::-;5491:6;5499;5507;5515;5523;5531;5584:2;5572:9;5563:7;5559:23;5555:32;5552:52;;;5600:1;5597;5590:12;5552:52;5640:9;5627:23;-1:-1:-1;;;;;5665:6:140;5662:30;5659:50;;;5705:1;5702;5695:12;5659:50;5744:70;5806:7;5797:6;5786:9;5782:22;5744:70;:::i;:::-;5833:8;;-1:-1:-1;5718:96:140;-1:-1:-1;;5921:2:140;5906:18;;5893:32;-1:-1:-1;;;;;5937:32:140;;5934:52;;;5982:1;5979;5972:12;5934:52;6021:72;6085:7;6074:8;6063:9;6059:24;6021:72;:::i;:::-;6112:8;;-1:-1:-1;5995:98:140;-1:-1:-1;;6200:2:140;6185:18;;6172:32;-1:-1:-1;;;;;6216:32:140;;6213:52;;;6261:1;6258;6251:12;6213:52;6300:72;6364:7;6353:8;6342:9;6338:24;6300:72;:::i;:::-;5333:1099;;;;-1:-1:-1;5333:1099:140;;-1:-1:-1;5333:1099:140;;6391:8;;5333:1099;-1:-1:-1;;;5333:1099:140:o;6437:127::-;6498:10;6493:3;6489:20;6486:1;6479:31;6529:4;6526:1;6519:15;6553:4;6550:1;6543:15;6569:1079;6646:6;6654;6707:2;6695:9;6686:7;6682:23;6678:32;6675:52;;;6723:1;6720;6713:12;6675:52;6762:9;6749:23;6781:31;6806:5;6781:31;:::i;:::-;6831:5;-1:-1:-1;6887:2:140;6872:18;;6859:32;-1:-1:-1;;;;;6903:30:140;;6900:50;;;6946:1;6943;6936:12;6900:50;6969:22;;7022:4;7014:13;;7010:27;-1:-1:-1;7000:55:140;;7051:1;7048;7041:12;7000:55;7091:2;7078:16;-1:-1:-1;;;;;7109:6:140;7106:30;7103:56;;;7139:18;;:::i;:::-;7188:2;7182:9;7280:2;7242:17;;-1:-1:-1;;7238:31:140;;;7271:2;7234:40;7230:54;7218:67;;-1:-1:-1;;;;;7300:34:140;;7336:22;;;7297:62;7294:88;;;7362:18;;:::i;:::-;7398:2;7391:22;7422;;;7463:15;;;7480:2;7459:24;7456:37;-1:-1:-1;7453:57:140;;;7506:1;7503;7496:12;7453:57;7562:6;7557:2;7553;7549:11;7544:2;7536:6;7532:15;7519:50;7615:1;7610:2;7601:6;7593;7589:19;7585:28;7578:39;7636:6;7626:16;;;;;6569:1079;;;;;:::o;7653:508::-;7730:6;7738;7746;7799:2;7787:9;7778:7;7774:23;7770:32;7767:52;;;7815:1;7812;7805:12;7767:52;7854:9;7841:23;7873:31;7898:5;7873:31;:::i;:::-;7923:5;-1:-1:-1;7980:2:140;7965:18;;7952:32;7993:33;7952:32;7993:33;:::i;:::-;7653:508;;8045:7;;-1:-1:-1;;;8125:2:140;8110:18;;;;8097:32;;7653:508::o;8166:1431::-;8360:6;8368;8376;8384;8392;8400;8408;8416;8469:3;8457:9;8448:7;8444:23;8440:33;8437:53;;;8486:1;8483;8476:12;8437:53;8526:9;8513:23;-1:-1:-1;;;;;8551:6:140;8548:30;8545:50;;;8591:1;8588;8581:12;8545:50;8630:70;8692:7;8683:6;8672:9;8668:22;8630:70;:::i;:::-;8719:8;;-1:-1:-1;8604:96:140;-1:-1:-1;;8807:2:140;8792:18;;8779:32;-1:-1:-1;;;;;8823:32:140;;8820:52;;;8868:1;8865;8858:12;8820:52;8907:72;8971:7;8960:8;8949:9;8945:24;8907:72;:::i;:::-;8998:8;;-1:-1:-1;8881:98:140;-1:-1:-1;;9086:2:140;9071:18;;9058:32;-1:-1:-1;;;;;9102:32:140;;9099:52;;;9147:1;9144;9137:12;9099:52;9186:72;9250:7;9239:8;9228:9;9224:24;9186:72;:::i;:::-;9277:8;;-1:-1:-1;9160:98:140;-1:-1:-1;;9365:2:140;9350:18;;9337:32;-1:-1:-1;;;;;9381:32:140;;9378:52;;;9426:1;9423;9416:12;9378:52;9465:72;9529:7;9518:8;9507:9;9503:24;9465:72;:::i;:::-;8166:1431;;;;-1:-1:-1;8166:1431:140;;-1:-1:-1;8166:1431:140;;;;;;9556:8;-1:-1:-1;;;8166:1431:140:o;9602:250::-;9687:1;9697:113;9711:6;9708:1;9705:13;9697:113;;;9787:11;;;9781:18;9768:11;;;9761:39;9733:2;9726:10;9697:113;;;-1:-1:-1;;9844:1:140;9826:16;;9819:27;9602:250::o;9857:396::-;10006:2;9995:9;9988:21;9969:4;10038:6;10032:13;10081:6;10076:2;10065:9;10061:18;10054:34;10097:79;10169:6;10164:2;10153:9;10149:18;10144:2;10136:6;10132:15;10097:79;:::i;:::-;10237:2;10216:15;-1:-1:-1;;10212:29:140;10197:45;;;;10244:2;10193:54;;9857:396;-1:-1:-1;;9857:396:140:o;11055:551::-;11150:6;11158;11166;11219:2;11207:9;11198:7;11194:23;11190:32;11187:52;;;11235:1;11232;11225:12;11187:52;11280:23;;;-1:-1:-1;11378:2:140;11363:18;;11350:32;-1:-1:-1;;;;;11394:30:140;;11391:50;;;11437:1;11434;11427:12;11391:50;11476:70;11538:7;11529:6;11518:9;11514:22;11476:70;:::i;:::-;11055:551;;11565:8;;-1:-1:-1;11450:96:140;;-1:-1:-1;;;;11055:551:140:o;11835:127::-;11896:10;11891:3;11887:20;11884:1;11877:31;11927:4;11924:1;11917:15;11951:4;11948:1;11941:15;13130:127;13191:10;13186:3;13182:20;13179:1;13172:31;13222:4;13219:1;13212:15;13246:4;13243:1;13236:15;13262:125;13327:9;;;13348:10;;;13345:36;;;13361:18;;:::i;13392:135::-;13431:3;13452:17;;;13449:43;;13472:18;;:::i;:::-;-1:-1:-1;13519:1:140;13508:13;;13392:135::o;14025:127::-;14086:10;14081:3;14077:20;14074:1;14067:31;14117:4;14114:1;14107:15;14141:4;14138:1;14131:15;14365:184;14435:6;14488:2;14476:9;14467:7;14463:23;14459:32;14456:52;;;14504:1;14501;14494:12;14456:52;-1:-1:-1;14527:16:140;;14365:184;-1:-1:-1;14365:184:140:o;14930:277::-;14997:6;15050:2;15038:9;15029:7;15025:23;15021:32;15018:52;;;15066:1;15063;15056:12;15018:52;15098:9;15092:16;15151:5;15144:13;15137:21;15130:5;15127:32;15117:60;;15173:1;15170;15163:12;15212:217;15252:1;15278;15268:132;;15322:10;15317:3;15313:20;15310:1;15303:31;15357:4;15354:1;15347:15;15385:4;15382:1;15375:15;15268:132;-1:-1:-1;15414:9:140;;15212:217::o;17755:128::-;17822:9;;;17843:11;;;17840:37;;;17857:18;;:::i;18141:287::-;18270:3;18308:6;18302:13;18324:66;18383:6;18378:3;18371:4;18363:6;18359:17;18324:66;:::i;:::-;18406:16;;;;;18141:287;-1:-1:-1;;18141:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":7976,"length":32},{"start":8017,"length":32},{"start":8341,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","WHITELIST_ROLE()":"7a997ab7","acceptGenesisCeremony()":"92a2ebf3","computeAllStake(address,uint256)":"55bdbe4c","computeAllStakeForAcceptingEpoch(address)":"574663a9","currentAcceptingEpochByDomain(address)":"b1de97f7","domainGenesisAccepted(address)":"d1ba90ff","epochDurationByDomain(address)":"3bccf635","getAcceptingEpoch(address)":"22fceb75","getAttesterStake(address,uint256,address)":"24fdfddf","getAttesterStakeForAcceptingEpoch(address,address)":"3debeadc","getCustodianStake(address,uint256,address)":"0ce52af5","getCustodianStakeForAcceptingEpoch(address,address)":"9db92f68","getEpochByL1BlockTime(address)":"d980b40d","getEpochDuration(address)":"5c534359","getNextAcceptingEpochWithException(address)":"771fcfc4","getNextPresentEpochWithException(address)":"57dd6a94","getRegisteredAttesters(address)":"1789aeb4","getRegisteredCustodians(address)":"341d5ef5","getRoleAdmin(bytes32)":"248a9ca3","getStake(address,uint256,address,address)":"93dfb85c","getStakeForAcceptingEpoch(address,address,address)":"a78d1fef","getStakedAttestersForAcceptingEpoch(address)":"4234a479","getUnstake(address,uint256,address,address)":"7d93768b","getUnstakeForAcceptingEpoch(address,address,address)":"34eada3a","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address)":"c4d66de8","proxiableUUID()":"52d1902d","registerDomain(uint256,address[])":"d37304f8","removeAddressFromWhitelist(address)":"286dd3f5","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardArray(address[],uint256[],address[])":"4e76a139","rewardFromDomain(address,uint256,address)":"5e00bf46","rollOverEpoch()":"a887b71c","setAcceptingEpoch(address,uint256)":"1dc8b949","slash(address[],address[],uint256[],uint256[])":"a885c975","stake(address,address,uint256)":"bf6eac2f","stakesByDomainEpochCustodian(address,uint256,address)":"86af70d1","stakesByDomainEpochCustodianAttester(address,uint256,address,address)":"0c8f522f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","unstake(address,address,uint256)":"60829f8a","unstakesByDomainEpochCustodianAttester(address,uint256,address,address)":"e6e3fb3a","upgradeToAndCall(address,bytes)":"4f1ef286","whitelistAddress(address)":"41566585"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CustodianTransferAmountMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EpochDurationNotSet\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GenesisAlreadyAccepted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"StakeExceedsGenesisStake\",\"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\":\"attester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"unstake\",\"type\":\"uint256\"}],\"name\":\"AttesterEpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterStaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"name\":\"AttesterUnstaked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"EpochRolledOver\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"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\":[],\"name\":\"WHITELIST_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"computeAllStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"computeAllStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"currentAcceptingEpochByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"currentAcceptingEpoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"domainGenesisAccepted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"epochDurationByDomain\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochByL1BlockTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getNextPresentEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredAttesters\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getRegisteredCustodians\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"}],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getUnstakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"registerDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"removeAddressFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"}],\"name\":\"rewardArray\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"rewardFromDomain\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rollOverEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"custodians\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"refundAmounts\",\"type\":\"uint256[]\"}],\"name\":\"slash\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"contract IERC20\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodian\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"stakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"unstake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"domain\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"unstakesByDomainEpochCustodianAttester\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"whitelistAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"computeAllStakeForAcceptingEpoch(address)\":{\"params\":{\"domain\":\"The domain to compute total stake for\"}},\"getCustodianStake(address,uint256,address)\":{\"details\":\"gets the total stake for a given epoch for a given custodian\"},\"getCustodianStakeForAcceptingEpoch(address,address)\":{\"details\":\"gets the total stake for the accepting epoch for a given custodian\"},\"getNextAcceptingEpochWithException(address)\":{\"details\":\"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getNextPresentEpochWithException(address)\":{\"details\":\"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes\"},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getStake(address,uint256,address,address)\":{\"details\":\"gets the stake for a given epoch for a given {attester,custodian} tuple\"},\"getStakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the stake for the accepting epoch for a given {attester,custodian} tuple\"},\"getUnstake(address,uint256,address,address)\":{\"details\":\"gets the unstake for a given epoch for a given {attester,custodian} tuple\"},\"getUnstakeForAcceptingEpoch(address,address,address)\":{\"details\":\"gets the unstake for the accepting epoch for a given {attester,custodian} tuple\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"rewardArray(address[],uint256[],address[])\":{\"params\":{\"amounts\":\"The amounts to reward\",\"attesters\":\"The attesters to reward\",\"custodians\":\"The custodians of the token from which to reward the attesters \"}},\"rewardFromDomain(address,uint256,address)\":{\"params\":{\"amount\":\"The amount to reward\",\"attester\":\"The attester to reward\",\"custodian\":\"The custodian of the token from which to reward the attester, here it is the domain\"}},\"setAcceptingEpoch(address,uint256)\":{\"params\":{\"domain\":\"The domain address\",\"newEpoch\":\"The new accepting epoch value\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"EpochDurationNotSet()\":[{\"notice\":\"Error thrown when trying to get epoch but duration not set\"}]},\"kind\":\"user\",\"methods\":{\"computeAllStake(address,uint256)\":{\"notice\":\"Computes total stake across all custodians and attesters for an epoch\"},\"computeAllStakeForAcceptingEpoch(address)\":{\"notice\":\"Computes total stake across all custodians and attesters for the current accepting epoch\"},\"getEpochDuration(address)\":{\"notice\":\"Gets the epoch duration for the given domain\"},\"getNextAcceptingEpochWithException(address)\":{\"notice\":\"Gets the next accepting epoch number\"},\"getNextPresentEpochWithException(address)\":{\"notice\":\"Gets the next present epoch number\"},\"getRegisteredAttesters(address)\":{\"notice\":\"Gets all attesters who are registered for the given domain\"},\"getRegisteredCustodians(address)\":{\"notice\":\"Gets all custodians who are registered for the given domain\"},\"getStakedAttestersForAcceptingEpoch(address)\":{\"notice\":\"Gets all attesters who have stake in the current accepting epoch\"},\"registerDomain(uint256,address[])\":{\"notice\":\"Registers a domain and sets the epoch duration\"},\"rewardArray(address[],uint256[],address[])\":{\"notice\":\"An array of custodians reward an array of attesters\"},\"rewardFromDomain(address,uint256,address)\":{\"notice\":\"Domain rewards an attester\"},\"setAcceptingEpoch(address,uint256)\":{\"notice\":\"Sets the accepting epoch for a given domain\"},\"stake(address,address,uint256)\":{\"notice\":\"Stakes for the next epoch\"},\"whitelistAddress(address)\":{\"notice\":\"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/staking/MovementStaking.sol\":\"MovementStaking\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"CustodianTransferAmountMismatch"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"EpochDurationNotSet"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"GenesisAlreadyAccepted"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[],"type":"error","name":"StakeExceedsGenesisStake"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"attester","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false},{"internalType":"uint256","name":"unstake","type":"uint256","indexed":false}],"type":"event","name":"AttesterEpochRolledOver","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterStaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":true},{"internalType":"address","name":"custodian","type":"address","indexed":true},{"internalType":"address","name":"attester","type":"address","indexed":false},{"internalType":"uint256","name":"stake","type":"uint256","indexed":false}],"type":"event","name":"AttesterUnstaked","anonymous":false},{"inputs":[{"internalType":"address","name":"domain","type":"address","indexed":true},{"internalType":"uint256","name":"epoch","type":"uint256","indexed":false}],"type":"event","name":"EpochRolledOver","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"WHITELIST_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"computeAllStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"computeAllStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"currentAcceptingEpochByDomain","outputs":[{"internalType":"uint256","name":"currentAcceptingEpoch","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"domainGenesisAccepted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"epochDurationByDomain","outputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochByL1BlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getNextPresentEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredAttesters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getRegisteredCustodians","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"}],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getUnstakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"contract IERC20","name":"_token","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epochDuration","type":"uint256"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"registerDomain"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeAddressFromWhitelist"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"address[]","name":"custodians","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"rewardArray"},{"inputs":[{"internalType":"address","name":"attester","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"rewardFromDomain"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"rollOverEpoch"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"address[]","name":"custodians","type":"address[]"},{"internalType":"address[]","name":"attesters","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"refundAmounts","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"slash"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"contract IERC20","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"stake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodian","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"stakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"unstake"},{"inputs":[{"internalType":"address","name":"domain","type":"address"},{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"unstakesByDomainEpochCustodianAttester","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"whitelistAddress"}],"devdoc":{"kind":"dev","methods":{"computeAllStakeForAcceptingEpoch(address)":{"params":{"domain":"The domain to compute total stake for"}},"getCustodianStake(address,uint256,address)":{"details":"gets the total stake for a given epoch for a given custodian"},"getCustodianStakeForAcceptingEpoch(address,address)":{"details":"gets the total stake for the accepting epoch for a given custodian"},"getNextAcceptingEpochWithException(address)":{"details":"Special handling for genesis state (epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getNextPresentEpochWithException(address)":{"details":"Special handling for genesis state (accepting epoch 0):If getAcceptingEpoch(domain) == 0, returns 0 to stay in genesis until ceremony completes"},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"getStake(address,uint256,address,address)":{"details":"gets the stake for a given epoch for a given {attester,custodian} tuple"},"getStakeForAcceptingEpoch(address,address,address)":{"details":"gets the stake for the accepting epoch for a given {attester,custodian} tuple"},"getUnstake(address,uint256,address,address)":{"details":"gets the unstake for a given epoch for a given {attester,custodian} tuple"},"getUnstakeForAcceptingEpoch(address,address,address)":{"details":"gets the unstake for the accepting epoch for a given {attester,custodian} tuple"},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"rewardArray(address[],uint256[],address[])":{"params":{"amounts":"The amounts to reward","attesters":"The attesters to reward","custodians":"The custodians of the token from which to reward the attesters "}},"rewardFromDomain(address,uint256,address)":{"params":{"amount":"The amount to reward","attester":"The attester to reward","custodian":"The custodian of the token from which to reward the attester, here it is the domain"}},"setAcceptingEpoch(address,uint256)":{"params":{"domain":"The domain address","newEpoch":"The new accepting epoch value"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"computeAllStake(address,uint256)":{"notice":"Computes total stake across all custodians and attesters for an epoch"},"computeAllStakeForAcceptingEpoch(address)":{"notice":"Computes total stake across all custodians and attesters for the current accepting epoch"},"getEpochDuration(address)":{"notice":"Gets the epoch duration for the given domain"},"getNextAcceptingEpochWithException(address)":{"notice":"Gets the next accepting epoch number"},"getNextPresentEpochWithException(address)":{"notice":"Gets the next present epoch number"},"getRegisteredAttesters(address)":{"notice":"Gets all attesters who are registered for the given domain"},"getRegisteredCustodians(address)":{"notice":"Gets all custodians who are registered for the given domain"},"getStakedAttestersForAcceptingEpoch(address)":{"notice":"Gets all attesters who have stake in the current accepting epoch"},"registerDomain(uint256,address[])":{"notice":"Registers a domain and sets the epoch duration"},"rewardArray(address[],uint256[],address[])":{"notice":"An array of custodians reward an array of attesters"},"rewardFromDomain(address,uint256,address)":{"notice":"Domain rewards an attester"},"setAcceptingEpoch(address,uint256)":{"notice":"Sets the accepting epoch for a given domain"},"stake(address,address,uint256)":{"notice":"Stakes for the next epoch"},"whitelistAddress(address)":{"notice":"Whitelist an address to be used as an attester or custodian. Whitelisting means that the address is allowed to stake and unstake"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/staking/MovementStaking.sol":"MovementStaking"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":111} diff --git a/protocol/pcp/clients/eth/abis/PCP.json b/protocol/pcp/clients/eth/abis/PCP.json index 1e9a3cb0..18700e84 100644 --- a/protocol/pcp/clients/eth/abis/PCP.json +++ b/protocol/pcp/clients/eth/abis/PCP.json @@ -1 +1 @@ -{"abi":[{"type":"function","name":"COMMITMENT_ADMIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TRUSTED_ATTESTER","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":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"attesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchGrantCommitmentAdmin","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchGrantTrustedAttester","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitmentFirstSeenAt","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitmentStake","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitement","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitments","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"createSuperBlockCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"pure"},{"type":"function","name":"forceLatestCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCommitmentByAttester","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getCommitmentFirstSeenAt","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxTolerableSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmedCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPresentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSuperBlockHeightAssignedEpoch","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"grantCommitmentAdmin","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantTrustedAttester","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_stakingContract","type":"address","internalType":"contract IMovementStaking"},{"name":"_lastPostconfirmedSuperBlockHeight","type":"uint256","internalType":"uint256"},{"name":"_leadingSuperBlockTolerance","type":"uint256","internalType":"uint256"},{"name":"_epochDuration","type":"uint256","internalType":"uint256"},{"name":"_custodians","type":"address[]","internalType":"address[]"},{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"},{"name":"_moveTokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isCommitted","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPostconfirmed","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithinPostconfirmerPrivilegeDuration","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"leadingSuperBlockTolerance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"moveTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"openAttestationEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmSuperBlocksAndRollover","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"postconfirmedAtL1BlockHeight","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockTimestamp","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockTimestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedBy","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"attester","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocks","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocksVersion","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardPerAttestationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rewardPerPostconfirmationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinCommitmentAgeForPostconfirmation","inputs":[{"name":"_minCommitmentAgeForPostconfirmation","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOpenAttestationEnabled","inputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmedCommitmentAtBlockHeight","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerDuration","inputs":[{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerPrivilegeDuration","inputs":[{"name":"_postconfirmerPrivilegeDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerAttestationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerPostconfirmationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakingContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMovementStaking"}],"stateMutability":"view"},{"type":"function","name":"submitBatchSuperBlockCommitment","inputs":[{"name":"superBlockCommitments","type":"tuple[]","internalType":"struct PCPStorage.SuperBlockCommitment[]","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitSuperBlockCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"superBlockHeightAssignedEpoch","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"versionedPostconfirmedSuperBlocks","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SuperBlockCommitmentSubmitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"attesterStake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SuperBlockPostconfirmed","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"height","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AttesterAlreadyCommitted","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLong","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLongForEpoch","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnacceptableSuperBlockCommitment","inputs":[]},{"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong","inputs":[]},{"type":"error","name":"postconfirmerPrivilegeDurationTooLong","inputs":[]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b50608051613c4561003d600039600081816126e60152818161270f01526128530152613c456000f3fe6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;1171:4:21;1128:48;;545:34560:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;11507:242:107;;;;;;;;;;-1:-1:-1;11507:242:107;;;;;:::i;:::-;;:::i;:::-;;;;1210:13:140;;1192:32;;1280:4;1268:17;;;1262:24;1240:20;;;1233:54;1331:17;;;1325:24;1303:20;;;1296:54;1180:2;1165:18;11507:242:107;968:388:140;6474:129:107;;;;;;;;;;-1:-1:-1;6566:30:107;;6474:129;;;1507:25:140;;;1495:2;1480:18;6474:129:107;1361:177:140;1406:41:108;;;;;;;;;;;;;;;;3846:77;;;;;;;;;;-1:-1:-1;3846:77:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;18935:308:107;;;;;;;;;;-1:-1:-1;18935:308:107;;;;;:::i;:::-;;:::i;:::-;;24959:683;;;;;;;;;;-1:-1:-1;24959:683:107;;;;;:::i;:::-;;:::i;33689:155::-;;;;;;;;;;-1:-1:-1;33689:155:107;;;;;:::i;:::-;;:::i;13996:337::-;;;;;;;;;;-1:-1:-1;13996:337:107;;;;;:::i;:::-;;:::i;2789:1624::-;;;;;;;;;;-1:-1:-1;2789:1624:107;;;;;:::i;:::-;;:::i;5413:111::-;;;;;;;;;;-1:-1:-1;5496:21:107;;5413:111;;33525:158;;;;;;;;;;;;;:::i;5318:107:108:-;;;;;;;;;;-1:-1:-1;5318:107:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;32361:287:107;;;;;;;;;;-1:-1:-1;32361:287:107;;;;;:::i;:::-;;:::i;7053:533::-;;;;;;;;;;-1:-1:-1;7053:533:107;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;17045:115:107:-;;;;;;;;;;;;;:::i;19249:200::-;;;;;;;;;;-1:-1:-1;19249:200:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;19402:31:107;;19368:66;;:33;:66;;;;;:74;;;;;;;;;;19361:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19249:200;5246:136:19;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;18335:405:107:-;;;;;;;;;;-1:-1:-1;18335:405:107;;;;;:::i;:::-;;:::i;9951:929::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6818:32:140;;;6800:51;;6788:2;6773:18;9951:929:107;6654:203:140;6348:245:19;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;8946:165:107:-;;;;;;;;;;;;;:::i;8574:133::-;;;;;;;;;;;;;:::i;4950:118:108:-;;;;;;;;;;-1:-1:-1;4950:118:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7415:25:140;;;7471:2;7456:18;;7449:34;;;;7499:18;;;7492:34;7403:2;7388:18;4950:118:108;7213:319:140;4837:570:107;;;;;;;;;;-1:-1:-1;4837:570:107;;;;;:::i;:::-;;:::i;32654:607::-;;;;;;;;;;-1:-1:-1;32654:607:107;;;;;:::i;:::-;;:::i;32108:176::-;;;;;;;;;;-1:-1:-1;32108:176:107;;;;;:::i;:::-;;:::i;1866:326::-;;;;;;;;;;-1:-1:-1;1866:326:107;;;;;:::i;:::-;;:::i;1978:36:108:-;;;;;;;;;;;;;;;;4161:214:21;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;14774:209:107:-;;;;;;;;;;-1:-1:-1;14774:209:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;14947:19:107;;;;:11;:19;;;;;;;;-1:-1:-1;;;;;14947:29:107;;;;;;;;;;;;;14940:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14774:209;2261:45:108;;;;;;;;;;;;;;;;33850:165:107;;;;;;;;;;-1:-1:-1;33850:165:107;;;;;:::i;:::-;;:::i;405:31:108:-;;;;;;;;;;-1:-1:-1;405:31:108;;;;-1:-1:-1;;;;;405:31:108;;;16904:135:107;;;;;;;;;;-1:-1:-1;16999:33:107;;16904:135;;8131:129;;;;;;;;;;;;;:::i;764:72::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;764:72:107;;9197:414;;;;;;;;;;;;;:::i;5480:40:108:-;;;;;;;;;;;;;;;;14339:430:107;;;;;;;;;;-1:-1:-1;14339:430:107;;;;;:::i;:::-;;:::i;34093:157::-;;;;;;;;;;-1:-1:-1;34093:157:107;;;;;:::i;:::-;34180:7;34206:27;;;:20;:27;;;;;;;;-1:-1:-1;;;;;34206:37:107;;;;;;;;;;;;;34093:157;8745:131;;;;;;;;;;;;;:::i;5168:97:108:-;;;;;;;;;;-1:-1:-1;5168:97:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;30800:311:107;;;;;;;;;;-1:-1:-1;30800:311:107;;;;;:::i;:::-;;:::i;4005:94:108:-;;;;;;;;;;-1:-1:-1;4005:94:108;;;;;:::i;:::-;;;;;;;;;;;;;;4539:109;;;;;;;;;;-1:-1:-1;4539:109:108;;;;;:::i;:::-;;;;;;;;;;;;;;654:72:107;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;654:72:107;;528:89:110;;;;;;;;;;;;;:::i;2198:136:107:-;;;;;;;;;;-1:-1:-1;2198:136:107;;;;;:::i;:::-;;:::i;2880:87:108:-;;;;;;;;;;-1:-1:-1;2880:87:108;;;;;:::i;:::-;;;;;;;;;;;;;;8331:207:107;;;;;;;;;;;;;:::i;3625:76:108:-;;;;;;;;;;-1:-1:-1;3625:76:108;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3625:76:108;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4465:195:107:-;;;;;;;;;;;;;:::i;15037:159::-;;;;;;;;;;;;;:::i;1623:237::-;;;;;;;;;;-1:-1:-1;1623:237:107;;;;;:::i;:::-;;:::i;4336:100:108:-;;;;;;;;;;-1:-1:-1;4336:100:108;;;;;:::i;:::-;;;;;;;;;;;;;;2317:49:19;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;34600:177:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7592:139::-;;;;;;;;;;-1:-1:-1;7689:35:107;;7592:139;;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;31543:484:107:-;;;;;;;;;;-1:-1:-1;31543:484:107;;;;;:::i;:::-;;:::i;31211:198::-;;;;;;;;;;-1:-1:-1;31211:198:107;;;;;:::i;:::-;;:::i;2106:50:108:-;;;;;;;;;;;;;;;;3248:105;;;;;;;;;;-1:-1:-1;3248:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2340:226:107;;;;;;;;;;-1:-1:-1;2340:226:107;;;;;:::i;:::-;;:::i;11026:250::-;;;;;;;;;;-1:-1:-1;11026:250:107;;;;;:::i;:::-;;:::i;7737:132::-;;;;;;;;;;-1:-1:-1;7737:132:107;;;;;:::i;:::-;;:::i;15520:149::-;;;;;;;;;;-1:-1:-1;15520:149:107;;;;;:::i;:::-;15599:7;15625:37;;;:29;:37;;;;;;;15520:149;5580:45:108;;;;;;;;;;;;;;;;33339:180:107;;;;;;;;;;-1:-1:-1;33339:180:107;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;3436:114:108:-;;;;;;;;;;-1:-1:-1;3436:114:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5787:464:107;;;;;;;;;;-1:-1:-1;5787:464:107;;;;;:::i;:::-;;:::i;15875:221::-;;;;;;;;;;-1:-1:-1;15875:221:107;;;;;:::i;:::-;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;15875:221;34783:133;;;;;;;;;;-1:-1:-1;34783:133:107;;;;;:::i;:::-;34843:4;34866:19;;;:11;:19;;;;;;;;34886:10;34866:31;;;;;;;:38;:43;;;34783:133;3049:105:108;;;;;;;;;;-1:-1:-1;3049:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5074:46;;;;;;;;;;;;;;;;34922:180:107;;;;;;;;;;-1:-1:-1;34922:180:107;;;;;:::i;:::-;35043:31;;34986:4;35009:66;;;:33;:66;;;;;;;;:74;;;;;;;:81;:86;;;34922:180;34336:177;;;;;;;;;;-1:-1:-1;34336:177:107;;;;;:::i;:::-;34433:7;34459:32;;;:25;:32;;;;;;;;-1:-1:-1;;;;;34459:47:107;;;;;;;;;;;;;34336:177;4718:89:108;;;;;;;;;;-1:-1:-1;4718:89:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;261:39;;;;;;;;;;-1:-1:-1;261:39:108;;;;-1:-1:-1;;;;;261:39:108;;;4855:34;;;;;;;;;;-1:-1:-1;4855:34:108;;;;;;;;1598:48;;;;;;;;;;;;;;;;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;11507:242:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;11693:49:107;;;;;;;;;;;;;;;;;;;;;;11507:242;;;;;;:::o;18935:308::-;19054:37;-1:-1:-1;;;;;;;;;;;19080:10:107;19054:7;:37::i;:::-;19033:132;;;;-1:-1:-1;;;19033:132:107;;13469:2:140;19033:132:107;;;13451:21:140;13508:2;13488:18;;;13481:30;13547:34;13527:18;;;13520:62;-1:-1:-1;;;13598:18:140;;;13591:46;13654:19;;19033:132:107;;;;;;;;;19175:61;19215:20;19175:39;:61::i;:::-;18935:308;:::o;24959:683::-;16028:27;;25078:4;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25148:1;25098:51;25094:94;;-1:-1:-1;25172:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25094:94::-;25561:15;25510:35;6566:30;;;6474:129;25510:35;7689;;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25392:102;;;;:::i;:::-;:153;;;;:::i;:::-;:184;25388:227;;;-1:-1:-1;25599:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25388:227::-;-1:-1:-1;25631:4:107;;24959:683;-1:-1:-1;24959:683:107:o;33689:155::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33795:25:107::1;:42:::0;33689:155::o;13996:337::-;14122:22;;;;;:63;;;14148:37;-1:-1:-1;;;;;;;;;;;14174:10:107;14148:7;:37::i;:::-;14101:144;;;;-1:-1:-1;;;14101:144:107;;;;;;;:::i;:::-;14255:71;14293:10;14305:20;14255:37;:71::i;2789:1624::-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;3225:33:107::1;:31;:33::i;:::-;3268:15;:34:::0;;-1:-1:-1;;;;;;3268:34:107::1;-1:-1:-1::0;;;;;3268:34:107;::::1;::::0;;::::1;::::0;;;3312:26:::1;:56:::0;;;3378:33:::1;:70:::0;;;3458:59:::1;::::0;-1:-1:-1;;;3458:59:107;;:30:::1;::::0;:59:::1;::::0;3489:14;;3505:11;;3458:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3527:32;3548:10;3527:20;:32::i;:::-;3569;3590:10;3569:20;:32::i;:::-;3611:21;:46:::0;;;3667:16:::1;:36:::0;;-1:-1:-1;;;;;;3667:36:107::1;-1:-1:-1::0;;;;;3667:36:107;::::1;;::::0;;4242:19:::1;4259:2;4242:14:::0;:19:::1;:::i;:::-;4204:35;:57:::0;4304:19:::1;4321:2;4304:14:::0;:19:::1;:::i;:::-;4271:30;:52:::0;4361:1:::1;4333:25;:29:::0;;;4372:30:::1;:34:::0;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;2789:1624:107;;;;;;;:::o;33525:158::-;33612:7;33642:34;33656:19;:17;:19::i;33642:34::-;33635:41;;33525:158;:::o;32361:287::-;32465:7;32503:15;;:138;;-1:-1:-1;;;32503:138:107;;32562:4;32503:138;;;15359:51:140;15426:18;;;15419:34;;;-1:-1:-1;;;;;15489:32:140;;;15469:18;;;15462:60;32503:15:107;;;;:33;;15332:18:140;;32503:138:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7053:533::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;6566:30:107;;7333:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;7333:47:107;;7374:4:::1;7333:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;7333:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;7333:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;;;;:::i;:::-;7293:36;:125;7289:207;;7441:44;;-1:-1:-1::0;;;7441:44:107::1;;;;;;;;;;;7289:207;-1:-1:-1::0;7505:35:107::1;:74:::0;7053:533::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;17045:115:107:-;17107:46;17142:10;17107:34;:46::i;:::-;17045:115::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;18335:405:107:-;18472:37;-1:-1:-1;;;;;;;;;;;18498:10:107;18472:7;:37::i;:::-;18451:152;;;;-1:-1:-1;;;18451:152:107;;16057:2:140;18451:152:107;;;16039:21:140;16096:2;16076:18;;;16069:30;;;16135:34;16115:18;;;16108:62;16206:34;16186:18;;;16179:62;-1:-1:-1;;;16257:19:140;;;16250:35;16302:19;;18451:152:107;15855:472:140;18451:152:107;18647:31;;18613:66;;;;:33;:66;;;;;;;;18680:27;;18613:95;;;;;;;;:118;;;;;;;;;;;;;;;;;;;;18335:405::o;9951:929::-;10000:7;10392:17;10412:27;:25;:27::i;:::-;10392:47;;10449:17;10469:19;:17;:19::i;:::-;10498:26;10527:15;;:66;;-1:-1:-1;;;10527:66:107;;10587:4;10527:66;;;6800:51:140;10449:39:107;;-1:-1:-1;10498:26:107;;-1:-1:-1;;;;;10527:15:107;;;;:51;;6773:18:140;;10527:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10527:66:107;;;;;;;;;;;;:::i;:::-;10498:95;;10607:9;:16;10627:1;10607:21;10603:69;;10659:1;10644:17;;;;;9951:929;:::o;10603:69::-;10681:26;10771:9;:16;10745:9;10756;10728:38;;;;;;;;17463:19:140;;;17507:2;17498:12;;17491:28;17544:2;17535:12;;17306:247;10728:38:107;;;;;;;;;;;;;10718:49;;;;;;10710:58;;:77;;;;:::i;:::-;10681:106;;10844:9;10854:18;10844:29;;;;;;;;:::i;:::-;;;;;;;10837:36;;;;;;9951:929;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;8946:165:107:-;9013:7;9039:15;;:65;;-1:-1:-1;;;9039:65:107;;9098:4;9039:65;;;6800:51:140;-1:-1:-1;;;;;9039:15:107;;;;:50;;6773:18:140;;9039:65:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8574:133::-;8622:7;8648:15;;:52;;-1:-1:-1;;;8648:52:107;;8694:4;8648:52;;;6800:51:140;-1:-1:-1;;;;;8648:15:107;;;;:37;;6773:18:140;;8648:52:107;6654:203:140;4837:570:107;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;5033:21:107::1;5057:15:::0;;:47:::1;::::0;-1:-1:-1;;;5057:47:107;;5098:4:::1;5057:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;5057:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;5057:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5033:71:::0;-1:-1:-1;5033:71:107;5229:26:::1;5233:22:::0;5229:1:::1;:26;:::i;:::-;:43;5225:120;;5296:38;;-1:-1:-1::0;;;5296:38:107::1;;;;;;;;;;;5225:120;-1:-1:-1::0;;5354:21:107::1;:46:::0;4837:570::o;32654:607::-;32727:7;32929:15;;:76;;-1:-1:-1;;;32929:76:107;;32990:4;32929:76;;;6800:51:140;32727:7:107;;-1:-1:-1;;;;;32929:15:107;;:39;;6773:18:140;;32929:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32929:76:107;;;;;;;;;;;;:::i;:::-;32899:106;;33015:18;33052:9;33047:181;33071:10;:17;33067:1;:21;33047:181;;;33178:39;33196:5;33203:10;33214:1;33203:13;;;;;;;;:::i;:::-;;;;;;;33178:17;:39::i;:::-;33164:53;;;;:::i;:::-;;-1:-1:-1;33090:3:107;;33047:181;;;-1:-1:-1;33244:10:107;32654:607;-1:-1:-1;;;32654:607:107:o;32108:176::-;32204:7;32230:47;32247:19;:17;:19::i;:::-;32268:8;32230:16;:47::i;1866:326::-;1966:39;2362:4:19;1994:10:107;1966:7;:39::i;:::-;1945:120;;;;-1:-1:-1;;;1945:120:107;;;;;;;:::i;:::-;2080:9;2075:111;2099:8;:15;2095:1;:19;2075:111;;;2135:40;-1:-1:-1;;;;;;;;;;;2163:8:107;2172:1;2163:11;;;;;;;;:::i;:::-;;;;;;;2135:9;:40::i;:::-;2116:3;;2075:111;;;;1866:326;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;33850:165:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33961:30:107::1;:47:::0;33850:165::o;8131:129::-;8180:7;8206:15;;:47;;-1:-1:-1;;;8206:47:107;;8247:4;8206:47;;;6800:51:140;-1:-1:-1;;;;;8206:15:107;;;;:32;;6773:18:140;;8206:47:107;6654:203:140;9197:414:107;9255:7;9471:15;;:47;;-1:-1:-1;;;9471:47:107;;9512:4;9471:47;;;6800:51:140;9296:15:107;;9255:7;;-1:-1:-1;;;;;9471:15:107;;;;:32;;6773:18:140;;9471:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9457:61;;:11;:61;:::i;:::-;9426:92;;9582:21;;9559:20;:44;;;;:::i;:::-;9535:69;;:20;:69;:::i;:::-;9528:76;;;;9197:414;:::o;14339:430::-;14471:22;;;;;:63;;;14497:37;-1:-1:-1;;;;;;;;;;;14523:10:107;14497:7;:37::i;:::-;14450:144;;;;-1:-1:-1;;;14450:144:107;;;;;;;:::i;:::-;14609:9;14604:159;14628:21;:28;14624:1;:32;14604:159;;;14677:75;14715:10;14727:21;14749:1;14727:24;;;;;;;;:::i;:::-;;;;;;;14677:37;:75::i;:::-;14658:3;;14604:159;;8745:131;8795:7;8821:15;;:48;;-1:-1:-1;;;8821:48:107;;8863:4;8821:48;;;6800:51:140;-1:-1:-1;;;;;8821:15:107;;;;:33;;6773:18:140;;8821:48:107;6654:203:140;30800:311:107;30921:7;30959:15;;:145;;-1:-1:-1;;;30959:145:107;;31009:4;30959:145;;;18614:51:140;18681:18;;;18674:34;;;-1:-1:-1;;;;;18744:32:140;;;18724:18;;;18717:60;18813:32;;;18793:18;;;18786:60;30959:15:107;;;;:24;;18586:19:140;;30959:145:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30940:164;30800:311;-1:-1:-1;;;;30800:311:107:o;528:89:110:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;587:23:110::1;:21;:23::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;528:89:110:o;2198:136:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2290:37:107::1;-1:-1:-1::0;;;;;;;;;;;2318:8:107::1;2290:9;:37::i;8331:207::-:0;8381:7;8483:15;;:47;;-1:-1:-1;;;8483:47:107;;8524:4;8483:47;;;6800:51:140;8422:15:107;;-1:-1:-1;;;;;8483:15:107;;:32;;6773:18:140;;8483:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8469:61;;:11;:61;:::i;:::-;8454:77;;:11;:77;:::i;:::-;8447:84;;;8331:207;:::o;3732::19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4465:195:107:-;4523:39;2362:4:19;4551:10:107;4523:7;:39::i;:::-;4515:89;;;;-1:-1:-1;;;4515:89:107;;19059:2:140;4515:89:107;;;19041:21:140;19098:2;19078:18;;;19071:30;19137:34;19117:18;;;19110:62;-1:-1:-1;;;19188:18:140;;;19181:35;19233:19;;4515:89:107;18857:401:140;4515:89:107;4614:15;;;:39;;;-1:-1:-1;;;4614:39:107;;;;-1:-1:-1;;;;;4614:15:107;;;;:37;;:39;;;;;;;;;;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;15037:159;15101:7;15163:26;;15127:33;;:62;;;;:::i;1623:237::-;1708:39;2362:4:19;1736:10:107;1708:7;:39::i;:::-;1687:120;;;;-1:-1:-1;;;1687:120:107;;;;;;;:::i;:::-;1817:36;-1:-1:-1;;;;;;;;;;;1845:7:107;1817:9;:36::i;34600:177::-;34703:15;;:66;;-1:-1:-1;;;34703:66:107;;34763:4;34703:66;;;6800:51:140;34668:16:107;;-1:-1:-1;;;;;34703:15:107;;:51;;6773:18:140;;34703:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34703:66:107;;;;;;;;;;;;:::i;31543:484::-;31645:7;31694:15;;:76;;-1:-1:-1;;;31694:76:107;;31755:4;31694:76;;;6800:51:140;31645:7:107;;-1:-1:-1;;;;;31694:15:107;;:39;;6773:18:140;;31694:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31694:76:107;;;;;;;;;;;;:::i;:::-;31664:106;;31780:18;31817:9;31812:182;31836:10;:17;31832:1;:21;31812:182;;;31943:40;31952:5;31959:10;31970:1;31959:13;;;;;;;;:::i;:::-;;;;;;;31974:8;31943;:40::i;:::-;31929:54;;;;:::i;:::-;;-1:-1:-1;31855:3:107;;31812:182;;;-1:-1:-1;32010:10:107;31543:484;-1:-1:-1;;;;31543:484:107:o;31211:198::-;31326:7;31352:50;31361:19;:17;:19::i;:::-;31382:9;31393:8;31352;:50::i;2340:226::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2452:9:107::1;2447:113;2471:9;:16;2467:1;:20;2447:113;;;2508:41;-1:-1:-1::0;;;;;;;;;;;2536:9:107::1;2546:1;2536:12;;;;;;;;:::i;2508:41::-;2489:3;;2447:113;;11026:250:::0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;11211:15:107::1;::::0;:58:::1;::::0;-1:-1:-1;;;11211:58:107;;11253:4:::1;11211:58;::::0;::::1;19437:51:140::0;19504:18;;;19497:34;;;-1:-1:-1;;;;;11211:15:107;;::::1;::::0;:33:::1;::::0;19410:18:140;;11211:58:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11026:250:::0;;:::o;7737:132::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;7830:22:107::1;:32:::0;;-1:-1:-1;;7830:32:107::1;::::0;::::1;;::::0;;;::::1;::::0;;7737:132::o;33339:180::-;33437:7;33463:49;33481:19;:17;:19::i;:::-;33502:9;33463:17;:49::i;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5787:464:107:-:0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;7689:35:107;;6008:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;6008:47:107;;6049:4:::1;6008:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;6008:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;6008:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;;;:::i;:::-;5973:31;:125;5969:202;;6121:39;;-1:-1:-1::0;;;6121:39:107::1;;;;;;;;;;;5969:202;-1:-1:-1::0;6180:30:107::1;:64:::0;5787:464::o;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;11817:2174:107:-;12062:27;;12050:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;12050:50:107;;;;;;;;;:57;:62;12046:113;;12133:26;;-1:-1:-1;;;12133:26:107;;;;;;;;;;;12046:113;12630:27;;12601:26;;12565:33;;:62;;12601:26;12565:62;:::i;:::-;:92;12561:156;;;12680:26;;-1:-1:-1;;;12680:26:107;;;;;;;;;;;12561:156;13081:27;;13051:58;;;;:29;:58;;;;;;:63;;13047:172;;13191:17;:15;:17::i;:::-;13160:27;;13130:58;;;;:29;:58;;;;;:78;13047:172;13287:27;;13275:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;13275:50:107;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;13425:106;;13515:15;13425:27;:106::i;:::-;13593:38;13634:43;13668:8;13634:33;:43::i;:::-;13703:27;;13687:44;;;;:15;:44;;;;;;;;13732:31;;;;13687:77;;;;;;;:111;;13593:84;;-1:-1:-1;13593:84:107;;13687:77;;:44;:111;;13593:84;;13687:111;:::i;:::-;;;;-1:-1:-1;;13857:28:107;;;;;13899:31;;;;;13814:170;;19716:25:140;;;19757:18;;;19750:34;;;13857:28:107;;13814:170;;19689:18:140;13814:170:107;;;;;;;11963:2028;11817:2174;;:::o;738:128:110:-;6931:20:20;:18;:20::i;:::-;817:42:110::1;2362:4:19;848:10:110;817;:42::i;17774:485:107:-:0;18173:67;18202:33;;18238:1;18202:37;;;;:::i;:::-;18173:28;:67::i;:::-;18166:87;;17774:485;:::o;7270:387:19:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:21;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;991:117:110;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;6818:32:140;;6518:60:21;;;6800:51:140;6773:18;;6518:60:21;6654:203:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1507:25:140;;;1480:18;;6317:34:21;1361:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;623:109:110;6931:20:20;:18;:20::i;:::-;692:33:110::1;:31;:33::i;4381:197:19:-:0;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;19455:32:140;;4514:47:19;;;19437:51:140;19504:18;;;19497:34;;;19410:18;;4514:47:19;19263:274:140;16170:443:107;16285:29;;;;:21;:29;;;;;;;;:41;;;;;;;;;:46;16281:263;;16170:443;;;:::o;16281:263::-;16415:9;16428:1;16415:14;16411:133;;16170:443;;;:::o;16411:133::-;16553:29;;;;:21;:29;;;;;;;;:41;;;;;;;;:53;16170:443::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;25987:4503:107;26069:4;26111:47;;;:29;:47;;;;;;16999:33;;26168:1014;;;26426:31;26460:29;26426:31;26490:18;26507:1;26490:16;:18;:::i;:::-;26460:49;;;;;;;;;;;;26426:83;;26545:23;26527:15;:41;26523:649;;;26591:32;26626:37;:35;:37::i;:::-;26591:72;;26791:9;26786:313;26810:15;:22;26806:1;:26;26786:313;;;26865:11;:29;26877:16;26865:29;;;;;;;;;;;:49;26895:15;26911:1;26895:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;26865:49:107;-1:-1:-1;;;;;26865:49:107;;;;;;;;;;;;:56;;;26925:1;26865:61;26861:220;;26954:47;;;;:29;:47;;;;;:73;;;27053:5;;26861:220;26834:3;;26786:313;;;;27134:23;27116:41;;26573:599;26523:649;26307:875;26168:1014;27500:15;27478:19;:17;:19::i;:::-;:37;27471:249;;;27694:15;:13;:15::i;:::-;27471:249;;;27905:21;27968:1;27934:30;27948:15;27934:13;:30::i;:::-;27930:34;;:1;:34;:::i;:::-;27929:40;;;;:::i;:::-;:44;;27972:1;27929:44;:::i;:::-;27905:68;;27983:26;28012:37;:35;:37::i;:::-;27983:66;;28311:31;28365:9;28360:1688;28384:9;:16;28380:1;:20;28360:1688;;;28421:16;28440:9;28450:1;28440:12;;;;;;;;:::i;:::-;;;;;;;;;;;;28466:48;28517:29;;;:11;:29;;;;;;-1:-1:-1;;;;;28517:39:107;;;;;;;;;;28466:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28440:12;;-1:-1:-1;28466:90:107;28759:47;;28755:61;;28808:8;;;;28755:61;28935:27;;28886:30;28919:44;;;:15;:44;;;;;;;;28964:31;;;;28919:77;;;;;;;;29015:39;;;29011:1027;;16028:27;;29262:17;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;29443:35;;29431:47;;16006:83;29431:47;:::i;:::-;29413:15;:65;29409:76;;;29480:5;;;;;;29409:76;29504:66;29537:20;29559:10;29504:32;:66::i;:::-;-1:-1:-1;29617:4:107;;25987:4503;-1:-1:-1;;;;;;;;;;25987:4503:107:o;29011:1027::-;28407:1641;;;28360:1688;28402:3;;28360:1688;;;;30261:26;30260:27;:70;;;;;30311:19;:17;:19::i;:::-;30291:17;:15;:17::i;:::-;:39;30260:70;30256:206;;;30346:15;:13;:15::i;:::-;-1:-1:-1;30382:4:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;30256:206::-;-1:-1:-1;30478:5:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;2264:344:40:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;22785:1897:107:-;22897:22;22922:19;:17;:19::i;:::-;22897:44;;22951:26;22980:37;:35;:37::i;:::-;22951:66;;23059:9;23054:1580;23078:9;:16;23074:1;:20;23054:1580;;;23172:1;23119:36;;;:20;:36;;;;;23156:12;;23172:1;;23156:9;;23166:1;;23156:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23119:50:107;-1:-1:-1;;;;;23119:50:107;;;;;;;;;;;;;:54;23115:697;;;23273:14;23371:47;23405:9;23415:1;23405:12;;;;;;;;:::i;:::-;;;;;;;23371:33;:47::i;:::-;23343:25;;23290:20;:36;23311:14;23290:36;;;;;;;;;;;:50;23327:9;23337:1;23327:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23290:50:107;-1:-1:-1;;;;;23290:50:107;;;;;;;;;;;;;:78;;;;:::i;:::-;:128;;;;:::i;:::-;23563:15;;23596:12;;23273:145;;-1:-1:-1;;;;;;23563:15:107;;:32;;23596:9;;23606:1;;23596:12;;;;;;:::i;:::-;;;;;;;;;;;23618:16;;23563:72;;-1:-1:-1;;;;;;23563:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;23563:72:107;;;15359:51:140;15426:18;;;15419:34;;;23618:16:107;;15469:18:140;;;15462:60;15332:18;;23563:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23175:637;23115:697;23932:1;23874:41;;;:25;:41;;;;;23916:12;;23932:1;;23916:9;;23926:1;;23916:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23874:55:107;-1:-1:-1;;;;;23874:55:107;;;;;;;;;;;;;:59;23870:754;;;23953:14;24061:47;24095:9;24105:1;24095:12;;;;;;;;:::i;24061:47::-;24028:30;;23970:25;:41;23996:14;23970:41;;;;;;;;;;;:55;24012:9;24022:1;24012:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23970:55:107;-1:-1:-1;;;;;23970:55:107;;;;;;;;;;;;;:88;;;;:::i;:::-;:138;;;;:::i;:::-;24126:15;;24159:12;;23953:155;;-1:-1:-1;;;;;;24126:15:107;;:32;;24159:9;;24169:1;;24159:12;;;;;;:::i;:::-;;;;;;;;;;;24181:16;;24126:72;;-1:-1:-1;;;;;;24126:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;24126:72:107;;;15359:51:140;15426:18;;;15419:34;;;24181:16:107;;15469:18:140;;;15462:60;15332:18;;24126:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23935:689;23870:754;23096:3;;23054:1580;;;-1:-1:-1;24644:15:107;;;:31;;;-1:-1:-1;;;24644:31:107;;;;-1:-1:-1;;;;;24644:15:107;;;;:29;;:31;;;;;;;;;;:15;;:31;;;;;;;;;;19647:2891;19776:29;19808:19;:17;:19::i;:::-;20102:27;;20072:58;;;;:29;:58;;;;;;19776:51;;-1:-1:-1;20072:83:107;;20068:155;;20178:34;;-1:-1:-1;;;20178:34:107;;;;;;;;;;;20068:155;20372:27;;:31;;20402:1;;20372:31;:::i;:::-;20335:33;;:68;20331:140;;20426:34;;-1:-1:-1;;;20426:34:107;;;;;;;;;;;20331:140;20571:26;20600:37;:35;:37::i;:::-;20571:66;;20652:9;20647:269;20671:9;:16;20667:1;:20;20647:269;;;20781:20;:31;;;20712:11;:40;20724:20;:27;;;20712:40;;;;;;;;;;;:54;20753:9;20763:1;20753:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20712:54:107;-1:-1:-1;;;;;20712:54:107;;;;;;;;;;;;:65;;;:100;20708:198;;20832:20;:43;20853:21;20832:43;;;;;;;;;;;:57;20876:9;20886:1;20876:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20832:57:107;-1:-1:-1;;;;;20832:57:107;;;;;;;;;;;;;:59;;;;;;;;;:::i;:::-;;;;;;20708:198;20689:3;;20647:269;;;;20972:60;21011:20;20972:38;:60::i;:::-;20967:900;;21157:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21157:58:107;;;;;;;;;:63;;21219:1;;21157:48;:63;;21219:1;;21157:63;:::i;:::-;;;;-1:-1:-1;20967:900:107;;-1:-1:-1;20967:900:107;;21751:8;-1:-1:-1;;;;;21729:30:107;:18;:16;:18::i;:::-;-1:-1:-1;;;;;21729:30:107;;21725:132;;21779:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21779:58:107;;;;;;;;;:63;;21841:1;;21779:48;:63;;21841:1;;21779:63;:::i;:::-;;;;-1:-1:-1;;21725:132:107;21911:31;;21877:66;;;;:33;:66;;;;;;;;21944:27;;21877:95;;;;;;;:118;;;;;;;;;;;;;;;;;;;;;;;;;;;22005:33;:63;;;22078:44;;;:15;:44;;;;;:55;;-1:-1:-1;;;;;;22078:55:107;-1:-1:-1;;;;;22078:55:107;;;;;22172:27;;22143:57;;:28;:57;;;;;22203:12;22143:72;;22257:27;;22225:60;;:31;:60;;;;;;22288:15;22225:78;;22407:28;22449:31;;22494:27;;22370:161;;19716:25:140;;;19757:18;;;19750:34;;;;22370:161:107;;19689:18:140;22370:161:107;;;;;;;19766:2772;;19647:2891;;:::o;1671:281:40:-;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;6818:32:140;;1805:47:40;;;6800:51:140;6773:18;;1805:47:40;6654:203:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;6818:32:140;;4933:24:53;;;6800:51:140;6773:18;;4933:24:53;6654:203:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:466;574:6;582;590;643:2;631:9;622:7;618:23;614:32;611:52;;;659:1;656;649:12;611:52;-1:-1:-1;;704:23:140;;;824:2;809:18;;796:32;;-1:-1:-1;927:2:140;912:18;;;899:32;;497:466;-1:-1:-1;497:466:140:o;1543:226::-;1602:6;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;-1:-1:-1;1716:23:140;;1543:226;-1:-1:-1;1543:226:140:o;1774:127::-;1835:10;1830:3;1826:20;1823:1;1816:31;1866:4;1863:1;1856:15;1890:4;1887:1;1880:15;1906:275;1977:2;1971:9;2042:2;2023:13;;-1:-1:-1;;2019:27:140;2007:40;;-1:-1:-1;;;;;2062:34:140;;2098:22;;;2059:62;2056:88;;;2124:18;;:::i;:::-;2160:2;2153:22;1906:275;;-1:-1:-1;1906:275:140:o;2186:727::-;2253:5;2301:4;2289:9;2284:3;2280:19;2276:30;2273:50;;;2319:1;2316;2309:12;2273:50;2372:2;2366:9;2414:4;2402:17;;-1:-1:-1;;;;;2434:34:140;;2470:22;;;2431:62;2428:88;;;2496:18;;:::i;:::-;2532:2;2525:22;;;2616:23;;2648;;2744:2;2729:18;;;2716:32;2764:15;;;2757:32;2847:18;;;2834:32;2882:15;;;2875:32;;;;-1:-1:-1;2565:6:140;2186:727;-1:-1:-1;2186:727:140:o;2918:254::-;3016:6;3069:2;3057:9;3048:7;3044:23;3040:32;3037:52;;;3085:1;3082;3075:12;3037:52;3108:58;3158:7;3147:9;3108:58;:::i;3177:149::-;-1:-1:-1;;;;;3270:31:140;;3260:42;;3250:70;;3316:1;3313;3306:12;3331:183;3391:4;-1:-1:-1;;;;;3416:6:140;3413:30;3410:56;;;3446:18;;:::i;:::-;-1:-1:-1;3491:1:140;3487:14;3503:4;3483:25;;3331:183::o;3519:762::-;3573:5;3626:3;3619:4;3611:6;3607:17;3603:27;3593:55;;3644:1;3641;3634:12;3593:55;3684:6;3671:20;3711:64;3727:47;3767:6;3727:47;:::i;:::-;3711:64;:::i;:::-;3799:3;3823:6;3818:3;3811:19;3855:4;3850:3;3846:14;3839:21;;3916:4;3906:6;3903:1;3899:14;3891:6;3887:27;3883:38;3869:52;;3944:3;3936:6;3933:15;3930:35;;;3961:1;3958;3951:12;3930:35;3997:4;3989:6;3985:17;4011:239;4027:6;4022:3;4019:15;4011:239;;;4109:3;4096:17;4126:49;4169:5;4126:49;:::i;:::-;4188:18;;4235:4;4226:14;;;;4044;4011:239;;;-1:-1:-1;4268:7:140;3519:762;-1:-1:-1;;;;;3519:762:140:o;4286:1170::-;4450:6;4458;4466;4474;4482;4490;4498;4551:3;4539:9;4530:7;4526:23;4522:33;4519:53;;;4568:1;4565;4558:12;4519:53;4607:9;4594:23;4626:49;4669:5;4626:49;:::i;:::-;4694:5;-1:-1:-1;4772:2:140;4757:18;;4744:32;;-1:-1:-1;4875:2:140;4860:18;;4847:32;;-1:-1:-1;4978:2:140;4963:18;;4950:32;;-1:-1:-1;5059:3:140;5044:19;;5031:33;-1:-1:-1;;;;;5076:30:140;;5073:50;;;5119:1;5116;5109:12;5073:50;5142:61;5195:7;5186:6;5175:9;5171:22;5142:61;:::i;:::-;5132:71;-1:-1:-1;;5276:3:140;5261:19;;5248:33;;-1:-1:-1;5359:3:140;5344:19;;5331:33;5373:51;5331:33;5373:51;:::i;:::-;5443:7;5433:17;;;4286:1170;;;;;;;;;;:::o;5461:385::-;5529:6;5537;5590:2;5578:9;5569:7;5565:23;5561:32;5558:52;;;5606:1;5603;5596:12;5558:52;5651:23;;;-1:-1:-1;5750:2:140;5735:18;;5722:32;5763:51;5722:32;5763:51;:::i;:::-;5833:7;5823:17;;;5461:385;;;;;:::o;6862:346::-;6930:6;6938;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;-1:-1:-1;;7052:23:140;;;7172:2;7157:18;;;7144:32;;-1:-1:-1;6862:346:140:o;7537:265::-;7596:6;7649:2;7637:9;7628:7;7624:23;7620:32;7617:52;;;7665:1;7662;7655:12;7617:52;7704:9;7691:23;7723:49;7766:5;7723:49;:::i;7807:348::-;7891:6;7944:2;7932:9;7923:7;7919:23;7915:32;7912:52;;;7960:1;7957;7950:12;7912:52;8000:9;7987:23;-1:-1:-1;;;;;8025:6:140;8022:30;8019:50;;;8065:1;8062;8055:12;8019:50;8088:61;8141:7;8132:6;8121:9;8117:22;8088:61;:::i;8160:918::-;8237:6;8245;8298:2;8286:9;8277:7;8273:23;8269:32;8266:52;;;8314:1;8311;8304:12;8266:52;8353:9;8340:23;8372:49;8415:5;8372:49;:::i;:::-;8440:5;-1:-1:-1;8496:2:140;8481:18;;8468:32;-1:-1:-1;;;;;8512:30:140;;8509:50;;;8555:1;8552;8545:12;8509:50;8578:22;;8631:4;8623:13;;8619:27;-1:-1:-1;8609:55:140;;8660:1;8657;8650:12;8609:55;8700:2;8687:16;-1:-1:-1;;;;;8718:6:140;8715:30;8712:56;;;8748:18;;:::i;:::-;8790:57;8837:2;8814:17;;-1:-1:-1;;8810:31:140;8843:2;8806:40;8790:57;:::i;:::-;8870:6;8863:5;8856:21;8918:7;8913:2;8904:6;8900:2;8896:15;8892:24;8889:37;8886:57;;;8939:1;8936;8929:12;8886:57;8994:6;8989:2;8985;8981:11;8976:2;8969:5;8965:14;8952:49;9046:1;9041:2;9032:6;9025:5;9021:18;9017:27;9010:38;9067:5;9057:15;;;;;8160:918;;;;;:::o;9083:965::-;9206:6;9259:2;9247:9;9238:7;9234:23;9230:32;9227:52;;;9275:1;9272;9265:12;9227:52;9315:9;9302:23;-1:-1:-1;;;;;9340:6:140;9337:30;9334:50;;;9380:1;9377;9370:12;9334:50;9403:22;;9456:4;9448:13;;9444:27;-1:-1:-1;9434:55:140;;9485:1;9482;9475:12;9434:55;9525:2;9512:16;9548:64;9564:47;9604:6;9564:47;:::i;9548:64::-;9634:3;9658:6;9653:3;9646:19;9690:2;9685:3;9681:12;9674:19;;9748:2;9740:4;9732:6;9728:17;9724:2;9720:26;9716:35;9702:49;;9774:7;9766:6;9763:19;9760:39;;;9795:1;9792;9785:12;9760:39;9827:2;9823;9819:11;9808:22;;9839:179;9855:6;9850:3;9847:15;9839:179;;;9923:52;9967:7;9962:3;9923:52;:::i;:::-;9918:3;9911:65;10005:2;10000:3;9996:12;9989:19;;9881:4;9876:3;9872:14;9865:21;;9839:179;;;10037:5;9083:965;-1:-1:-1;;;;;;9083:965:140:o;10053:544::-;10130:6;10138;10146;10199:2;10187:9;10178:7;10174:23;10170:32;10167:52;;;10215:1;10212;10205:12;10167:52;10260:23;;;-1:-1:-1;10359:2:140;10344:18;;10331:32;10372:51;10331:32;10372:51;:::i;:::-;10442:7;-1:-1:-1;10501:2:140;10486:18;;10473:32;10514:51;10473:32;10514:51;:::i;:::-;10584:7;10574:17;;;10053:544;;;;;:::o;10602:446::-;10655:3;10693:5;10687:12;10720:6;10715:3;10708:19;10752:4;10747:3;10743:14;10736:21;;10791:4;10784:5;10780:16;10814:1;10824:199;10838:6;10835:1;10832:13;10824:199;;;10903:13;;-1:-1:-1;;;;;10899:39:140;10887:52;;10968:4;10959:14;;;;10996:17;;;;10935:1;10853:9;10824:199;;;-1:-1:-1;11039:3:140;;10602:446;-1:-1:-1;;;;10602:446:140:o;11053:261::-;11232:2;11221:9;11214:21;11195:4;11252:56;11304:2;11293:9;11289:18;11281:6;11252:56;:::i;11319:250::-;11404:1;11414:113;11428:6;11425:1;11422:13;11414:113;;;11504:11;;;11498:18;11485:11;;;11478:39;11450:2;11443:10;11414:113;;;-1:-1:-1;;11561:1:140;11543:16;;11536:27;11319:250::o;11574:396::-;11723:2;11712:9;11705:21;11686:4;11755:6;11749:13;11798:6;11793:2;11782:9;11778:18;11771:34;11814:79;11886:6;11881:2;11870:9;11866:18;11861:2;11853:6;11849:15;11814:79;:::i;:::-;11954:2;11933:15;-1:-1:-1;;11929:29:140;11914:45;;;;11961:2;11910:54;;11574:396;-1:-1:-1;;11574:396:140:o;11975:424::-;12043:6;12051;12104:2;12092:9;12083:7;12079:23;12075:32;12072:52;;;12120:1;12117;12110:12;12072:52;12159:9;12146:23;12178:49;12221:5;12178:49;:::i;:::-;12246:5;-1:-1:-1;12303:2:140;12288:18;;12275:32;12316:51;12275:32;12316:51;:::i;12755:273::-;12811:6;12864:2;12852:9;12843:7;12839:23;12835:32;12832:52;;;12880:1;12877;12870:12;12832:52;12919:9;12906:23;12972:5;12965:13;12958:21;12951:5;12948:32;12938:60;;12994:1;12991;12984:12;13684:127;13745:10;13740:3;13736:20;13733:1;13726:31;13776:4;13773:1;13766:15;13800:4;13797:1;13790:15;13816:125;13881:9;;;13902:10;;;13899:36;;;13915:18;;:::i;13946:398::-;14148:2;14130:21;;;14187:2;14167:18;;;14160:30;14226:34;14221:2;14206:18;;14199:62;-1:-1:-1;;;14292:2:140;14277:18;;14270:32;14334:3;14319:19;;13946:398::o;14349:332::-;14556:6;14545:9;14538:25;14599:2;14594;14583:9;14579:18;14572:30;14519:4;14619:56;14671:2;14660:9;14656:18;14648:6;14619:56;:::i;14686:127::-;14747:10;14742:3;14738:20;14735:1;14728:31;14778:4;14775:1;14768:15;14802:4;14799:1;14792:15;14818:120;14858:1;14884;14874:35;;14889:18;;:::i;:::-;-1:-1:-1;14923:9:140;;14818:120::o;15533:184::-;15603:6;15656:2;15644:9;15635:7;15631:23;15627:32;15624:52;;;15672:1;15669;15662:12;15624:52;-1:-1:-1;15695:16:140;;15533:184;-1:-1:-1;15533:184:140:o;15722:128::-;15789:9;;;15810:11;;;15807:37;;;15824:18;;:::i;16332:969::-;16427:6;16480:2;16468:9;16459:7;16455:23;16451:32;16448:52;;;16496:1;16493;16486:12;16448:52;16529:9;16523:16;-1:-1:-1;;;;;16554:6:140;16551:30;16548:50;;;16594:1;16591;16584:12;16548:50;16617:22;;16670:4;16662:13;;16658:27;-1:-1:-1;16648:55:140;;16699:1;16696;16689:12;16648:55;16732:2;16726:9;16755:64;16771:47;16811:6;16771:47;:::i;16755:64::-;16841:3;16865:6;16860:3;16853:19;16897:2;16892:3;16888:12;16881:19;;16952:2;16942:6;16939:1;16935:14;16931:2;16927:23;16923:32;16909:46;;16978:7;16970:6;16967:19;16964:39;;;16999:1;16996;16989:12;16964:39;17031:2;17027;17023:11;17012:22;;17043:228;17059:6;17054:3;17051:15;17043:228;;;17132:3;17126:10;17149:49;17192:5;17149:49;:::i;:::-;17211:18;;17258:2;17076:12;;;;17249;;;;17043:228;;17558:112;17590:1;17616;17606:35;;17621:18;;:::i;:::-;-1:-1:-1;17655:9:140;;17558:112::o;17675:127::-;17736:10;17731:3;17727:20;17724:1;17717:31;17767:4;17764:1;17757:15;17791:4;17788:1;17781:15;17807:168;17880:9;;;17911;;17928:15;;;17922:22;;17908:37;17898:71;;17949:18;;:::i;17980:398::-;18182:2;18164:21;;;18221:2;18201:18;;;18194:30;18260:34;18255:2;18240:18;;18233:62;-1:-1:-1;;;18326:2:140;18311:18;;18304:32;18368:3;18353:19;;17980:398::o;20263:135::-;20302:3;20323:17;;;20320:43;;20343:18;;:::i;:::-;-1:-1:-1;20390:1:140;20379:13;;20263:135::o;20403:287::-;20532:3;20570:6;20564:13;20586:66;20645:6;20640:3;20633:4;20625:6;20621:17;20586:66;:::i;:::-;20668:16;;;;;20403:287;-1:-1:-1;;20403:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":9958,"length":32},{"start":9999,"length":32},{"start":10323,"length":32}]}},"methodIdentifiers":{"COMMITMENT_ADMIN()":"80e460f0","DEFAULT_ADMIN_ROLE()":"a217fddf","TRUSTED_ATTESTER()":"5db916ab","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptGenesisCeremony()":"92a2ebf3","attesterRewardPoints(uint256,address)":"6f865294","batchGrantCommitmentAdmin(address[])":"4b47d955","batchGrantTrustedAttester(address[])":"cf6772ad","commitmentFirstSeenAt(uint256,bytes32)":"d7830688","commitmentStake(uint256,bytes32)":"c19b406c","commitments(uint256,address)":"e90d4c06","createSuperBlockCommitment(uint256,bytes32,bytes32)":"026583d7","forceLatestCommitment((uint256,bytes32,bytes32))":"08c7050f","getAcceptingEpoch()":"6c713af8","getAttesterRewardPoints(uint256,address)":"6978ab12","getAttesterStake(uint256,address)":"ba26513e","getAttesterStakeForAcceptingEpoch(address)":"491d0467","getCommitmentByAttester(uint256,address)":"f1949add","getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":"e07472ef","getCustodianStake(uint256,address)":"1de38fe1","getCustodianStakeForAcceptingEpoch(address)":"d440116d","getEpochDuration()":"5d3ea8f1","getEpochStartTime()":"90879f64","getLastPostconfirmedSuperBlockHeight()":"59b99597","getMaxTolerableSuperBlockHeight()":"943b79e2","getMinCommitmentAgeForPostconfirmation()":"ab208ebd","getNextAcceptingEpochWithException()":"3752d675","getPostconfirmedCommitment(uint256)":"2bfd11d6","getPostconfirmer()":"35ea1c63","getPostconfirmerDuration()":"1241ebe3","getPostconfirmerPrivilegeDuration()":"028e490a","getPostconfirmerRewardPoints(uint256,address)":"ed8a1d59","getPostconfirmerStartTime()":"5f4d642e","getPresentEpoch()":"37d7f58f","getRoleAdmin(bytes32)":"248a9ca3","getStake(uint256,address,address)":"7aa81c2a","getStakeForAcceptingEpoch(address,address)":"bb04bd2f","getStakedAttestersForAcceptingEpoch()":"aa0d6fcd","getSuperBlockHeightAssignedEpoch(uint256)":"d283392e","getTotalStake(uint256)":"45367f23","getTotalStakeForAcceptingEpoch()":"14e38026","getValidatorCommitmentAtSuperBlockHeight(uint256,address)":"556d97c8","grantCommitmentAdmin(address)":"949d7c2a","grantRole(bytes32,address)":"2f2ff15d","grantTrustedAttester(address)":"81df1746","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address,uint256,uint256,uint256,address[],uint256,address)":"107e21ca","isCommitted(uint256)":"e4a3fb74","isPostconfirmed(uint256)":"ec23ec2e","isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":"0cf6b6bd","lastPostconfirmedSuperBlockHeight()":"fdafe9ca","leadingSuperBlockTolerance()":"03d3f7fd","minCommitmentAgeForPostconfirmation()":"bff92c8c","moveTokenAddress()":"58376877","openAttestationEnabled()":"ef9ae15c","postconfirmSuperBlocksAndRollover()":"26624e37","postconfirmedAtL1BlockHeight(uint256)":"7ac561c8","postconfirmedAtL1BlockHeightByPostconfirmer(uint256)":"7cfd8205","postconfirmedAtL1BlockTimestamp(uint256)":"a207fe2f","postconfirmedBy(uint256)":"91807e4f","postconfirmedByPostconfirmer(uint256)":"08750a32","postconfirmedSuperBlocks(uint256)":"eda67fc4","postconfirmedSuperBlocksVersion()":"ec18c186","postconfirmerDuration()":"4ceb2e66","postconfirmerPrivilegeDuration()":"55b8119d","postconfirmerRewardPoints(uint256,address)":"1db859c7","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardPerAttestationPoint()":"5f83c7d5","rewardPerPostconfirmationPoint()":"d3eef4cc","setAcceptingEpoch(uint256)":"d03509ec","setMinCommitmentAgeForPostconfirmation(uint256)":"1f83e2a3","setOpenAttestationEnabled(bool)":"d2526fef","setPostconfirmedCommitmentAtBlockHeight((uint256,bytes32,bytes32))":"3119edd4","setPostconfirmerDuration(uint256)":"3d645927","setPostconfirmerPrivilegeDuration(uint256)":"da7d28b6","setRewardPerAttestationPoint(uint256)":"0d39f7f0","setRewardPerPostconfirmationPoint(uint256)":"57342282","stakingContract()":"ee99205c","submitBatchSuperBlockCommitment((uint256,bytes32,bytes32)[])":"622e3616","submitSuperBlockCommitment((uint256,bytes32,bytes32))":"0e74b609","superBlockHeightAssignedEpoch(uint256)":"85e6b8c2","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286","versionedPostconfirmedSuperBlocks(uint256,uint256)":"3ba18005"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AttesterAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLongForEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnacceptableSuperBlockCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDurationTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"attesterStake\",\"type\":\"uint256\"}],\"name\":\"SuperBlockCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"SuperBlockPostconfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMITMENT_ADMIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_ATTESTER\",\"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\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"attesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchGrantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"}],\"name\":\"batchGrantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitement\",\"type\":\"bytes32\"}],\"name\":\"commitmentStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"name\":\"createSuperBlockCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"forceLatestCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCommitmentByAttester\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"getCommitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxTolerableSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getPostconfirmedCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"getPostconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPresentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getSuperBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getTotalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getValidatorCommitmentAtSuperBlockHeight\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"grantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"_stakingContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lastPostconfirmedSuperBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leadingSuperBlockTolerance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_custodians\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_moveTokenAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isCommitted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isPostconfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"isWithinPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leadingSuperBlockTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moveTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmSuperBlocksAndRollover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeightByPostconfirmer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedBy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedByPostconfirmer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmedSuperBlocksVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"postconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerAttestationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerPostconfirmationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minCommitmentAgeForPostconfirmation\",\"type\":\"uint256\"}],\"name\":\"setMinCommitmentAgeForPostconfirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOpenAttestationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"setPostconfirmedCommitmentAtBlockHeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerPrivilegeDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerPrivilegeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerAttestationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerPostconfirmationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingContract\",\"outputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment[]\",\"name\":\"superBlockCommitments\",\"type\":\"tuple[]\"}],\"name\":\"submitBatchSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"submitSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"superBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"versionedPostconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getPostconfirmerPrivilegeDuration()\":{\"returns\":{\"_0\":\"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"details\":\"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAcceptingEpoch(uint256)\":{\"params\":{\"newEpoch\":\"The new accepting epoch value\"}},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"params\":{\"_minCommitmentAgeForPostconfirmation\":\"New minimum commitment age \"}},\"setPostconfirmerDuration(uint256)\":{\"params\":{\"_postconfirmerDuration\":\"New postconfirmer term duration in time units\"}},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"params\":{\"_postconfirmerPrivilegeDuration\":\"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"PostconfirmerDurationTooLong()\":[{\"notice\":\"Error thrown when postconfirmer term is greater than 256 blocks\"}],\"PostconfirmerDurationTooLongForEpoch()\":[{\"notice\":\"Error thrown when postconfirmer term is too large for epoch duration\"}],\"minCommitmentAgeForPostconfirmationTooLong()\":[{\"notice\":\"Error thrown when minimum commitment age is greater than epoch duration\"}],\"postconfirmerPrivilegeDurationTooLong()\":[{\"notice\":\"Error thrown when maximum postconfirmer non-reactivity time is greater than epoch duration\"}]},\"kind\":\"user\",\"methods\":{\"COMMITMENT_ADMIN()\":{\"notice\":\"The role that allows the commitment admin to set the accepting epoch\"},\"TRUSTED_ATTESTER()\":{\"notice\":\"The role that allows attesters to submit commitments\"},\"acceptGenesisCeremony()\":{\"notice\":\"Accepts the genesis ceremony.\"},\"getAcceptingEpoch()\":{\"notice\":\"get the accepting epoch\"},\"getAttesterRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for an attester in a given epoch\"},\"getAttesterStake(uint256,address)\":{\"notice\":\"Gets the stake for a given attester at a given epoch\"},\"getAttesterStakeForAcceptingEpoch(address)\":{\"notice\":\"Gets the stake for a given attester at the accepting epoch\"},\"getCommitmentByAttester(uint256,address)\":{\"notice\":\"Gets the commitment submitted by an attester for a given height\"},\"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))\":{\"notice\":\"get the timestamp when a commitment was first seen\"},\"getCustodianStake(uint256,address)\":{\"notice\":\"Gets the stake for a given custodian for a given epoch\"},\"getEpochDuration()\":{\"notice\":\"Gets the epoch duration\"},\"getEpochStartTime()\":{\"notice\":\"Gets the time at which the current epoch started\"},\"getLastPostconfirmedSuperBlockHeight()\":{\"notice\":\"Gets the height of the last postconfirmed superblock\"},\"getPostconfirmedCommitment(uint256)\":{\"notice\":\"get the postconfirmed commitment for a given height\"},\"getPostconfirmer()\":{\"notice\":\"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness\"},\"getPostconfirmerDuration()\":{\"notice\":\"Gets the postconfirmer duration\"},\"getPostconfirmerPrivilegeDuration()\":{\"notice\":\"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"getPostconfirmerRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for a postconfirmer in a given epoch\"},\"getPostconfirmerStartTime()\":{\"notice\":\"Gets the time at which the current postconfirmer's term started\"},\"getPresentEpoch()\":{\"notice\":\"get the present epoch\"},\"getStake(uint256,address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at a given epoch\"},\"getStakeForAcceptingEpoch(address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at the accepting epoch\"},\"getStakedAttestersForAcceptingEpoch()\":{\"notice\":\"Gets the attesters who have stake in the current accepting epoch\"},\"getSuperBlockHeightAssignedEpoch(uint256)\":{\"notice\":\"Gets the epoch assigned to a superblock height\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"notice\":\"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window\"},\"minCommitmentAgeForPostconfirmation()\":{\"notice\":\"Minimum time that must pass before a commitment can be postconfirmed\"},\"postconfirmSuperBlocksAndRollover()\":{\"notice\":\"postconfirm superblocks and rollover\"},\"postconfirmerDuration()\":{\"notice\":\"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period.\"},\"postconfirmerPrivilegeDuration()\":{\"notice\":\"Max time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"setAcceptingEpoch(uint256)\":{\"notice\":\"Sets the accepting epoch to a new value (must be higher than current)\"},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"notice\":\"Sets the minimum time that must pass before a commitment can be postconfirmed\"},\"setPostconfirmerDuration(uint256)\":{\"notice\":\"Sets the postconfirmer term duration, must be less than epoch duration\"},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"notice\":\"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/settlement/PCP.sol\":\"PCP\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/settlement/PCP.sol\":{\"keccak256\":\"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b\",\"dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp\"]},\"src/settlement/PCPStorage.sol\":{\"keccak256\":\"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff\",\"dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss\"]},\"src/settlement/interfaces/IPCP.sol\":{\"keccak256\":\"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f\",\"dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg\"]},\"src/settlement/settlement/BaseSettlement.sol\":{\"keccak256\":\"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e\",\"dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AttesterAlreadyCommitted"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLong"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLongForEpoch"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnacceptableSuperBlockCommitment"},{"inputs":[],"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong"},{"inputs":[],"type":"error","name":"postconfirmerPrivilegeDurationTooLong"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"attesterStake","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockCommitmentSubmitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"height","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockPostconfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMITMENT_ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TRUSTED_ATTESTER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"attesterRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantCommitmentAdmin"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantTrustedAttester"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitement","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentStake","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"commitments","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"createSuperBlockCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"forceLatestCommitment"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCommitmentByAttester","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"getCommitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxTolerableSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPostconfirmedCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"getPostconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPresentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSuperBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTotalStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCommitmentAdmin"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantTrustedAttester"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IMovementStaking","name":"_stakingContract","type":"address"},{"internalType":"uint256","name":"_lastPostconfirmedSuperBlockHeight","type":"uint256"},{"internalType":"uint256","name":"_leadingSuperBlockTolerance","type":"uint256"},{"internalType":"uint256","name":"_epochDuration","type":"uint256"},{"internalType":"address[]","name":"_custodians","type":"address[]"},{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"},{"internalType":"address","name":"_moveTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isCommitted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isPostconfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"isWithinPostconfirmerPrivilegeDuration","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leadingSuperBlockTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"moveTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"openAttestationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"postconfirmSuperBlocksAndRollover"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeight","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockTimestamp","outputs":[{"internalType":"uint256","name":"L1BlockTimestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedBy","outputs":[{"internalType":"address","name":"attester","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedByPostconfirmer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocksVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"postconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerAttestationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerPostconfirmationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"uint256","name":"_minCommitmentAgeForPostconfirmation","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMinCommitmentAgeForPostconfirmation"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOpenAttestationEnabled"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmedCommitmentAtBlockHeight"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerDuration"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerPrivilegeDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerPrivilegeDuration"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerAttestationPoint"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerPostconfirmationPoint"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingContract","outputs":[{"internalType":"contract IMovementStaking","name":"","type":"address"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment[]","name":"superBlockCommitments","type":"tuple[]","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitBatchSuperBlockCommitment"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitSuperBlockCommitment"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"superBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"versionedPostconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getPostconfirmerPrivilegeDuration()":{"returns":{"_0":"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"details":"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setAcceptingEpoch(uint256)":{"params":{"newEpoch":"The new accepting epoch value"}},"setMinCommitmentAgeForPostconfirmation(uint256)":{"params":{"_minCommitmentAgeForPostconfirmation":"New minimum commitment age "}},"setPostconfirmerDuration(uint256)":{"params":{"_postconfirmerDuration":"New postconfirmer term duration in time units"}},"setPostconfirmerPrivilegeDuration(uint256)":{"params":{"_postconfirmerPrivilegeDuration":"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"COMMITMENT_ADMIN()":{"notice":"The role that allows the commitment admin to set the accepting epoch"},"TRUSTED_ATTESTER()":{"notice":"The role that allows attesters to submit commitments"},"acceptGenesisCeremony()":{"notice":"Accepts the genesis ceremony."},"getAcceptingEpoch()":{"notice":"get the accepting epoch"},"getAttesterRewardPoints(uint256,address)":{"notice":"Gets the reward points for an attester in a given epoch"},"getAttesterStake(uint256,address)":{"notice":"Gets the stake for a given attester at a given epoch"},"getAttesterStakeForAcceptingEpoch(address)":{"notice":"Gets the stake for a given attester at the accepting epoch"},"getCommitmentByAttester(uint256,address)":{"notice":"Gets the commitment submitted by an attester for a given height"},"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":{"notice":"get the timestamp when a commitment was first seen"},"getCustodianStake(uint256,address)":{"notice":"Gets the stake for a given custodian for a given epoch"},"getEpochDuration()":{"notice":"Gets the epoch duration"},"getEpochStartTime()":{"notice":"Gets the time at which the current epoch started"},"getLastPostconfirmedSuperBlockHeight()":{"notice":"Gets the height of the last postconfirmed superblock"},"getPostconfirmedCommitment(uint256)":{"notice":"get the postconfirmed commitment for a given height"},"getPostconfirmer()":{"notice":"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness"},"getPostconfirmerDuration()":{"notice":"Gets the postconfirmer duration"},"getPostconfirmerPrivilegeDuration()":{"notice":"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"},"getPostconfirmerRewardPoints(uint256,address)":{"notice":"Gets the reward points for a postconfirmer in a given epoch"},"getPostconfirmerStartTime()":{"notice":"Gets the time at which the current postconfirmer's term started"},"getPresentEpoch()":{"notice":"get the present epoch"},"getStake(uint256,address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at a given epoch"},"getStakeForAcceptingEpoch(address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at the accepting epoch"},"getStakedAttestersForAcceptingEpoch()":{"notice":"Gets the attesters who have stake in the current accepting epoch"},"getSuperBlockHeightAssignedEpoch(uint256)":{"notice":"Gets the epoch assigned to a superblock height"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"notice":"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window"},"minCommitmentAgeForPostconfirmation()":{"notice":"Minimum time that must pass before a commitment can be postconfirmed"},"postconfirmSuperBlocksAndRollover()":{"notice":"postconfirm superblocks and rollover"},"postconfirmerDuration()":{"notice":"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period."},"postconfirmerPrivilegeDuration()":{"notice":"Max time the postconfirmer can be non-reactive to an honest superBlock commitment"},"setAcceptingEpoch(uint256)":{"notice":"Sets the accepting epoch to a new value (must be higher than current)"},"setMinCommitmentAgeForPostconfirmation(uint256)":{"notice":"Sets the minimum time that must pass before a commitment can be postconfirmed"},"setPostconfirmerDuration(uint256)":{"notice":"Sets the postconfirmer term duration, must be less than epoch duration"},"setPostconfirmerPrivilegeDuration(uint256)":{"notice":"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/settlement/PCP.sol":"PCP"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/settlement/PCP.sol":{"keccak256":"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714","urls":["bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b","dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp"],"license":"UNLICENSED"},"src/settlement/PCPStorage.sol":{"keccak256":"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1","urls":["bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff","dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss"],"license":"UNLICENSED"},"src/settlement/interfaces/IPCP.sol":{"keccak256":"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89","urls":["bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f","dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg"],"license":"UNLICENSED"},"src/settlement/settlement/BaseSettlement.sol":{"keccak256":"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a","urls":["bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e","dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":107} \ No newline at end of file +{"abi":[{"type":"function","name":"COMMITMENT_ADMIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"TRUSTED_ATTESTER","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":"acceptGenesisCeremony","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"attesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batchGrantCommitmentAdmin","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"batchGrantTrustedAttester","inputs":[{"name":"attesters","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitmentFirstSeenAt","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"timestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitmentStake","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"commitement","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"stake","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"commitments","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"createSuperBlockCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"pure"},{"type":"function","name":"forceLatestCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getAttesterStakeForAcceptingEpoch","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCommitmentByAttester","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getCommitmentFirstSeenAt","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getCustodianStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getEpochStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMaxTolerableSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getNextAcceptingEpochWithException","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmedCommitment","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmer","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPostconfirmerStartTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getPresentEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeForAcceptingEpoch","inputs":[{"name":"custodian","type":"address","internalType":"address"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakedAttestersForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"getSuperBlockHeightAssignedEpoch","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStake","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getTotalStakeForAcceptingEpoch","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","inputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"attester","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"stateMutability":"view"},{"type":"function","name":"grantCommitmentAdmin","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"grantTrustedAttester","inputs":[{"name":"attester","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_stakingContract","type":"address","internalType":"contract IMovementStaking"},{"name":"_lastPostconfirmedSuperBlockHeight","type":"uint256","internalType":"uint256"},{"name":"_leadingSuperBlockTolerance","type":"uint256","internalType":"uint256"},{"name":"_epochDuration","type":"uint256","internalType":"uint256"},{"name":"_custodians","type":"address[]","internalType":"address[]"},{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"},{"name":"_moveTokenAddress","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"initialize","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isCommitted","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPostconfirmed","inputs":[{"name":"height","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWithinPostconfirmerPrivilegeDuration","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"lastPostconfirmedSuperBlockHeight","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"leadingSuperBlockTolerance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minCommitmentAgeForPostconfirmation","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"moveTokenAddress","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"openAttestationEnabled","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmSuperBlocksAndRollover","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"postconfirmedAtL1BlockHeight","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockHeight","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedAtL1BlockTimestamp","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"L1BlockTimestamp","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedBy","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"attester","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedByPostconfirmer","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocks","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"postconfirmedSuperBlocksVersion","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerPrivilegeDuration","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"postconfirmerRewardPoints","inputs":[{"name":"epoch","type":"uint256","internalType":"uint256"},{"name":"postconfirmer","type":"address","internalType":"address"}],"outputs":[{"name":"points","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardPerAttestationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rewardPerPostconfirmationPoint","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setAcceptingEpoch","inputs":[{"name":"newEpoch","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinCommitmentAgeForPostconfirmation","inputs":[{"name":"_minCommitmentAgeForPostconfirmation","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOpenAttestationEnabled","inputs":[{"name":"enabled","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmedCommitmentAtBlockHeight","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerDuration","inputs":[{"name":"_postconfirmerDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPostconfirmerPrivilegeDuration","inputs":[{"name":"_postconfirmerPrivilegeDuration","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerAttestationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setRewardPerPostconfirmationPoint","inputs":[{"name":"rewardPerPoint","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"stakingContract","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IMovementStaking"}],"stateMutability":"view"},{"type":"function","name":"submitBatchSuperBlockCommitment","inputs":[{"name":"superBlockCommitments","type":"tuple[]","internalType":"struct PCPStorage.SuperBlockCommitment[]","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitSuperBlockCommitment","inputs":[{"name":"superBlockCommitment","type":"tuple","internalType":"struct PCPStorage.SuperBlockCommitment","components":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"superBlockHeightAssignedEpoch","inputs":[{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"epoch","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"versionedPostconfirmedSuperBlocks","inputs":[{"name":"","type":"uint256","internalType":"uint256"},{"name":"superBlockHeight","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"height","type":"uint256","internalType":"uint256"},{"name":"commitment","type":"bytes32","internalType":"bytes32"},{"name":"blockId","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SuperBlockCommitmentSubmitted","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"attesterStake","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SuperBlockPostconfirmed","inputs":[{"name":"blockHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"stateCommitment","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"height","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":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AttesterAlreadyCommitted","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLong","inputs":[]},{"type":"error","name":"PostconfirmerDurationTooLongForEpoch","inputs":[]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"UnacceptableSuperBlockCommitment","inputs":[]},{"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong","inputs":[]},{"type":"error","name":"postconfirmerPrivilegeDurationTooLong","inputs":[]}],"bytecode":{"object":"0x60a060405230608052348015601357600080fd5b50608051613c4561003d600039600081816126e60152818161270f01526128530152613c456000f3fe6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;1171:4:21;1128:48;;545:34560:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106104c05760003560e01c80636c713af811610276578063bff92c8c1161014f578063e07472ef116100c1578063ed8a1d5911610085578063ed8a1d59146110a3578063eda67fc4146110e6578063ee99205c14611122578063ef9ae15c14611142578063f1949add14610962578063fdafe9ca1461115c57600080fd5b8063e07472ef14610f94578063e4a3fb7414610fd0578063e90d4c061461100a578063ec18c18614611051578063ec23ec2e1461106757600080fd5b8063d283392e11610113578063d283392e14610eb9578063d3eef4cc14610ee6578063d440116d14610efc578063d547741f14610f1c578063d783068814610f3c578063da7d28b614610f7457600080fd5b8063bff92c8c14610e0b578063c19b406c14610e21578063cf6772ad14610e59578063d03509ec14610e79578063d2526fef14610e9957600080fd5b806391d14854116101e8578063a217fddf116101ac578063a217fddf14610d41578063aa0d6fcd14610d56578063ab208ebd14610d78578063ad3cb1cc14610d8d578063ba26513e14610dcb578063bb04bd2f14610deb57600080fd5b806391d1485414610caa57806392a2ebf314610cca578063943b79e214610cdf578063949d7c2a14610cf4578063a207fe2f14610d1457600080fd5b806380e460f01161023a57806380e460f014610bdb5780638129fc1c14610bfd57806381df174614610c1257806385e6b8c214610c3257806390879f6414610c5f57806391807e4f14610c7457600080fd5b80636c713af814610b145780636f86529414610b295780637aa81c2a14610b615780637ac561c814610b815780637cfd820514610bae57600080fd5b806336568abe116103a8578063556d97c81161031a5780635d3ea8f1116102de5780635d3ea8f114610a4f5780635db916ab14610a645780635f4d642e14610a865780635f83c7d514610a9b578063622e361614610ab15780636978ab1214610ad157600080fd5b8063556d97c81461096257806355b8119d146109e457806357342282146109fa5780635837687714610a1a57806359b9959714610a3a57600080fd5b806345367f231161036c57806345367f23146108c4578063491d0467146108e45780634b47d955146109045780634ceb2e66146109245780634f1ef2861461093a57806352d1902d1461094d57600080fd5b806336568abe146107f85780633752d6751461081857806337d7f58f1461082d5780633ba18005146108425780633d645927146108a457600080fd5b80631241ebe311610441578063248a9ca311610405578063248a9ca3146106e557806326624e37146107055780632bfd11d61461071a5780632f2ff15d1461078b5780633119edd4146107ab57806335ea1c63146107cb57600080fd5b80631241ebe31461064357806314e38026146106585780631db859c71461066d5780631de38fe1146106a55780631f83e2a3146106c557600080fd5b806308c7050f1161048857806308c7050f146105a15780630cf6b6bd146105c35780630d39f7f0146105e35780630e74b60914610603578063107e21ca1461062357600080fd5b806301ffc9a7146104c5578063026583d7146104fa578063028e490a1461053c57806303d3f7fd1461055b57806308750a3214610571575b600080fd5b3480156104d157600080fd5b506104e56104e03660046133da565b611172565b60405190151581526020015b60405180910390f35b34801561050657600080fd5b5061051a610515366004613404565b6111a9565b60408051825181526020808401519082015291810151908201526060016104f1565b34801561054857600080fd5b506006545b6040519081526020016104f1565b34801561056757600080fd5b5061054d60025481565b34801561057d57600080fd5b506104e561058c366004613430565b600c6020526000908152604090205460ff1681565b3480156105ad57600080fd5b506105c16105bc3660046134e7565b6111e3565b005b3480156105cf57600080fd5b506104e56105de3660046134e7565b611271565b3480156105ef57600080fd5b506105c16105fe366004613430565b6112f5565b34801561060f57600080fd5b506105c161061e3660046134e7565b611313565b34801561062f57600080fd5b506105c161063e3660046135b1565b61135d565b34801561064f57600080fd5b5060045461054d565b34801561066457600080fd5b5061054d611545565b34801561067957600080fd5b5061054d61068836600461363b565b601560209081526000928352604080842090915290825290205481565b3480156106b157600080fd5b5061054d6106c036600461363b565b611557565b3480156106d157600080fd5b506105c16106e0366004613430565b6115d3565b3480156106f157600080fd5b5061054d610700366004613430565b611689565b34801561071157600080fd5b506105c16116ab565b34801561072657600080fd5b5061051a610735366004613430565b604080516060808201835260008083526020808401829052928401819052601354815260128352838120948152938252928290208251938401835280548452600181015491840191909152600201549082015290565b34801561079757600080fd5b506105c16107a636600461363b565b6116b6565b3480156107b757600080fd5b506105c16107c63660046134e7565b6116d8565b3480156107d757600080fd5b506107e06117a6565b6040516001600160a01b0390911681526020016104f1565b34801561080457600080fd5b506105c161081336600461363b565b6118b0565b34801561082457600080fd5b5061054d6118e8565b34801561083957600080fd5b5061054d611956565b34801561084e57600080fd5b5061088961085d36600461366b565b601260209081526000928352604080842090915290825290208054600182015460029092015490919083565b604080519384526020840192909252908201526060016104f1565b3480156108b057600080fd5b506105c16108bf366004613430565b611987565b3480156108d057600080fd5b5061054d6108df366004613430565b611a3f565b3480156108f057600080fd5b5061054d6108ff36600461368d565b611afe565b34801561091057600080fd5b506105c161091f3660046136aa565b611b11565b34801561093057600080fd5b5061054d60045481565b6105c16109483660046136de565b611b81565b34801561095957600080fd5b5061054d611b9c565b34801561096e57600080fd5b5061051a61097d36600461363b565b60408051606081018252600080825260208201819052918101919091525060009182526008602090815260408084206001600160a01b0393909316845291815291819020815160608101835281548152600182015493810193909352600201549082015290565b3480156109f057600080fd5b5061054d60065481565b348015610a0657600080fd5b506105c1610a15366004613430565b611bb9565b348015610a2657600080fd5b506001546107e0906001600160a01b031681565b348015610a4657600080fd5b5060035461054d565b348015610a5b57600080fd5b5061054d611bd7565b348015610a7057600080fd5b5061054d600080516020613bf083398151915281565b348015610a9257600080fd5b5061054d611c08565b348015610aa757600080fd5b5061054d60165481565b348015610abd57600080fd5b506105c1610acc366004613789565b611ca4565b348015610add57600080fd5b5061054d610aec36600461363b565b60009182526014602090815260408084206001600160a01b0393909316845291905290205490565b348015610b2057600080fd5b5061054d611d1b565b348015610b3557600080fd5b5061054d610b4436600461363b565b601460209081526000928352604080842090915290825290205481565b348015610b6d57600080fd5b5061054d610b7c366004613828565b611d4c565b348015610b8d57600080fd5b5061054d610b9c366004613430565b600d6020526000908152604090205481565b348015610bba57600080fd5b5061054d610bc9366004613430565b600f6020526000908152604090205481565b348015610be757600080fd5b5061054d600080516020613b9083398151915281565b348015610c0957600080fd5b506105c1611dd8565b348015610c1e57600080fd5b506105c1610c2d36600461368d565b611ee4565b348015610c3e57600080fd5b5061054d610c4d366004613430565b60076020526000908152604090205481565b348015610c6b57600080fd5b5061054d611f14565b348015610c8057600080fd5b506107e0610c8f366004613430565b600b602052600090815260409020546001600160a01b031681565b348015610cb657600080fd5b506104e5610cc536600461363b565b611f9b565b348015610cd657600080fd5b506105c1611fd3565b348015610ceb57600080fd5b5061054d61208d565b348015610d0057600080fd5b506105c1610d0f36600461368d565b61209f565b348015610d2057600080fd5b5061054d610d2f366004613430565b600e6020526000908152604090205481565b348015610d4d57600080fd5b5061054d600081565b348015610d6257600080fd5b50610d6b6120de565b6040516104f191906138af565b348015610d8457600080fd5b5060055461054d565b348015610d9957600080fd5b50610dbe604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516104f191906138e6565b348015610dd757600080fd5b5061054d610de636600461363b565b61214f565b348015610df757600080fd5b5061054d610e06366004613919565b612210565b348015610e1757600080fd5b5061054d60055481565b348015610e2d57600080fd5b5061054d610e3c36600461366b565b600960209081526000928352604080842090915290825290205481565b348015610e6557600080fd5b506105c1610e743660046136aa565b612224565b348015610e8557600080fd5b506105c1610e94366004613430565b612274565b348015610ea557600080fd5b506105c1610eb4366004613947565b6122f4565b348015610ec557600080fd5b5061054d610ed4366004613430565b60009081526007602052604090205490565b348015610ef257600080fd5b5061054d60175481565b348015610f0857600080fd5b5061054d610f1736600461368d565b612320565b348015610f2857600080fd5b506105c1610f3736600461363b565b612333565b348015610f4857600080fd5b5061054d610f5736600461366b565b600a60209081526000928352604080842090915290825290205481565b348015610f8057600080fd5b506105c1610f8f366004613430565b61234f565b348015610fa057600080fd5b5061054d610faf3660046134e7565b80516000908152600a60209081526040808320938201518352929052205490565b348015610fdc57600080fd5b506104e5610feb366004613430565b6000908152600860209081526040808320338452909152902054151590565b34801561101657600080fd5b5061088961102536600461363b565b600860209081526000928352604080842090915290825290208054600182015460029092015490919083565b34801561105d57600080fd5b5061054d60135481565b34801561107357600080fd5b506104e5611082366004613430565b60135460009081526012602090815260408083209383529290522054151590565b3480156110af57600080fd5b5061054d6110be36600461363b565b60009182526015602090815260408084206001600160a01b0393909316845291905290205490565b3480156110f257600080fd5b50610889611101366004613430565b60106020526000908152604090208054600182015460029092015490919083565b34801561112e57600080fd5b506000546107e0906001600160a01b031681565b34801561114e57600080fd5b506011546104e59060ff1681565b34801561116857600080fd5b5061054d60035481565b60006001600160e01b03198216637965db0b60e01b14806111a357506301ffc9a760e01b6001600160e01b03198316145b92915050565b60408051606080820183526000808352602080840182905292840152825190810183528581529081018490529081018290525b9392505050565b6111fb600080516020613b9083398151915233611f9b565b6112655760405162461bcd60e51b815260206004820152603060248201527f464f5243455f4c41544553545f434f4d4d49544d454e545f49535f434f4d4d4960448201526f544d454e545f41444d494e5f4f4e4c5960801b60648201526084015b60405180910390fd5b61126e816116d8565b50565b80516000908152600a6020908152604080832082850151845290915281205460000361129f57506000919050565b426112a960065490565b60055484516000908152600a602090815260408083208289015184529091529020546112d5919061397f565b6112df919061397f565b10156112ed57506000919050565b506001919050565b600080516020613b9083398151915261130d81612405565b50601655565b60115460ff16806113375750611337600080516020613bf083398151915233611f9b565b6113535760405162461bcd60e51b815260040161125c90613992565b61126e338261240f565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03166000811580156113a25750825b90506000826001600160401b031660011480156113be5750303b155b9050811580156113cc575080155b156113ea5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561141457845460ff60401b1916600160401b1785555b61141c612589565b600080546001600160a01b0319166001600160a01b038e1690811790915560028b905560038c9055604051631a6e609f60e31b815263d37304f890611467908c908c906004016139d4565b600060405180830381600087803b15801561148157600080fd5b505af1158015611495573d6000803e3d6000fd5b505050506114a23361209f565b6114ab33611ee4565b6004879055600180546001600160a01b0319166001600160a01b0388161790556114d6600a8a613a03565b6005556114e4600a8a613a03565b60065560016016819055601755831561153757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050505050565b60006115526108df611d1b565b905090565b60008054604051630ce52af560e01b8152306004820152602481018590526001600160a01b03848116604483015290911690630ce52af590606401602060405180830381865afa1580156115af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111dc9190613a17565b600080516020613b908339815191526115eb81612405565b600654600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa158015611636573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061165a9190613a17565b6116649190613a30565b82106116835760405163a7075e5f60e01b815260040160405180910390fd5b50600555565b6000908152600080516020613bd0833981519152602052604090206001015490565b6116b43361259c565b565b6116bf82611689565b6116c881612405565b6116d283836125ba565b50505050565b6116f0600080516020613b9083398151915233611f9b565b6117705760405162461bcd60e51b8152602060048201526044602482018190527f5345545f4c4153545f504f5354434f4e4649524d45445f434f4d4d49544d454e908201527f545f41545f4845494748545f49535f434f4d4d49544d454e545f41444d494e5f6064820152634f4e4c5960e01b608482015260a40161125c565b60135460009081526012602090815260408083208451845282529182902083518155908301516001820155910151600290910155565b6000806117b1611c08565b905060006117bd611f14565b60008054604051634234a47960e01b815230600482015292935090916001600160a01b0390911690634234a47990602401600060405180830381865afa15801561180b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526118339190810190613a43565b90508051600003611848576000935050505090565b600081518484604051602001611868929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c61188b9190613ad7565b905081818151811061189f5761189f613aeb565b602002602001015194505050505090565b6001600160a01b03811633146118d95760405163334bd91960e11b815260040160405180910390fd5b6118e3828261265f565b505050565b60008054604051631dc7f3f160e21b81523060048201526001600160a01b039091169063771fcfc4906024015b602060405180830381865afa158015611932573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190613a17565b6000805460405163d980b40d60e01b81523060048201526001600160a01b039091169063d980b40d90602401611915565b600080516020613b9083398151915261199f81612405565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156119e8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0c9190613a17565b905080611a1a846002613b01565b10611a38576040516360bc402f60e01b815260040160405180910390fd5b5050600455565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015611a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ab09190810190613a43565b90506000805b8251811015611af657611ae285848381518110611ad557611ad5613aeb565b6020026020010151611557565b611aec908361397f565b9150600101611ab6565b509392505050565b60006111a3611b0b611d1b565b8361214f565b611b1c600033611f9b565b611b385760405162461bcd60e51b815260040161125c90613b18565b60005b8151811015611b7d57611b75600080516020613b90833981519152838381518110611b6857611b68613aeb565b60200260200101516116b6565b600101611b3b565b5050565b611b896126db565b611b9282612780565b611b7d828261278b565b6000611ba6612848565b50600080516020613bb083398151915290565b600080516020613b90833981519152611bd181612405565b50601755565b60008054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401611915565b60008054604051635c53435960e01b8152306004820152429183916001600160a01b0390911690635c53435990602401602060405180830381865afa158015611c55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c799190613a17565b611c839083613ad7565b905060045481611c939190613ad7565b611c9d9082613a30565b9250505090565b60115460ff1680611cc85750611cc8600080516020613bf083398151915233611f9b565b611ce45760405162461bcd60e51b815260040161125c90613992565b60005b8151811015611b7d57611d1333838381518110611d0657611d06613aeb565b602002602001015161240f565b600101611ce7565b600080546040516322fceb7560e01b81523060048201526001600160a01b03909116906322fceb7590602401611915565b600080546040516324f7ee1760e21b8152306004820152602481018690526001600160a01b0385811660448301528481166064830152909116906393dfb85c90608401602060405180830381865afa158015611dac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd09190613a17565b949350505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015611e1d5750825b90506000826001600160401b03166001148015611e395750303b155b905081158015611e47575080155b15611e655760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315611e8f57845460ff60401b1916600160401b1785555b611e97612891565b8315611edd57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b600080516020613b90833981519152611efc81612405565b611b7d600080516020613bf0833981519152836116b6565b60008054604051635c53435960e01b815230600482015242916001600160a01b031690635c53435990602401602060405180830381865afa158015611f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f819190613a17565b611f8b9082613ad7565b611f959082613a30565b91505090565b6000918252600080516020613bd0833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b611fde600033611f9b565b6120385760405162461bcd60e51b815260206004820152602560248201527f4143434550545f47454e455349535f434552454d4f4e595f49535f41444d494e6044820152645f4f4e4c5960d81b606482015260840161125c565b60008054604080516392a2ebf360e01b815290516001600160a01b03909216926392a2ebf39260048084019382900301818387803b15801561207957600080fd5b505af11580156116d2573d6000803e3d6000fd5b6000600254600354611552919061397f565b6120aa600033611f9b565b6120c65760405162461bcd60e51b815260040161125c90613b18565b61126e600080516020613b90833981519152826116b6565b600054604051634234a47960e01b81523060048201526060916001600160a01b031690634234a47990602401600060405180830381865afa158015612127573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526115529190810190613a43565b6000805460405163341d5ef560e01b815230600482015282916001600160a01b03169063341d5ef590602401600060405180830381865afa158015612198573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526121c09190810190613a43565b90506000805b8251811015612207576121f3868483815181106121e5576121e5613aeb565b602002602001015187611d4c565b6121fd908361397f565b91506001016121c6565b50949350505050565b60006111dc61221d611d1b565b8484611d4c565b600080516020613b9083398151915261223c81612405565b60005b82518110156118e35761226c600080516020613bf0833981519152848381518110611b6857611b68613aeb565b60010161223f565b600080516020613b9083398151915261228c81612405565b600054604051631dc8b94960e01b8152306004820152602481018490526001600160a01b0390911690631dc8b94990604401600060405180830381600087803b1580156122d857600080fd5b505af11580156122ec573d6000803e3d6000fd5b505050505050565b600080516020613b9083398151915261230c81612405565b506011805460ff1916911515919091179055565b60006111a361232d611d1b565b83611557565b61233c82611689565b61234581612405565b6116d2838361265f565b600080516020613b9083398151915261236781612405565b600554600054604051635c53435960e01b81523060048201526001600160a01b0390911690635c53435990602401602060405180830381865afa1580156123b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123d69190613a17565b6123e09190613a30565b82106123ff57604051633c9f1a5360e01b815260040160405180910390fd5b50600655565b61126e81336128a1565b805160009081526008602090815260408083206001600160a01b03861684529091529020541561245257604051630ae09ad960e41b815260040160405180910390fd5b8051600254600354612464919061397f565b101561248357604051630ae09ad960e41b815260040160405180910390fd5b805160009081526007602052604081205490036124b4576124a2611956565b81516000908152600760205260409020555b805160009081526008602090815260408083206001600160a01b038616845282529182902083518082559184015160018201819055928401516002909101556124fd91426128da565b600061250883611afe565b8251600090815260096020908152604080832082870151845290915281208054929350839290919061253b90849061397f565b9091555050604080830151602080850151835190815290810184905290917fa8445a6b8a16633ad62fbc0954848ec55c4d5323d90b9745dbda4121ec5ce12b910160405180910390a2505050565b612591612927565b61126e6000336125ba565b6125b360035460016125ae919061397f565b612970565b61259c5750565b6000600080516020613bd08339815191526125d58484611f9b565b612655576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561260b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a460019150506111a3565b60009150506111a3565b6000600080516020613bd083398151915261267a8484611f9b565b15612655576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a460019150506111a3565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061276257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316612756600080516020613bb0833981519152546001600160a01b031690565b6001600160a01b031614155b156116b45760405163703e46dd60e11b815260040160405180910390fd5b6000611b7d81612405565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156127e5575060408051601f3d908101601f191682019092526127e291810190613a17565b60015b61280d57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161125c565b600080516020613bb0833981519152811461283e57604051632a87526960e21b81526004810182905260240161125c565b6118e38383612bed565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146116b45760405163703e46dd60e11b815260040160405180910390fd5b612899612927565b6116b4612589565b6128ab8282611f9b565b611b7d5760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161125c565b6000838152600a60209081526040808320858452909152902054156128fe57505050565b8060000361290b57505050565b6000928352600a60209081526040808520938552929052912055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166116b457604051631afcd79f60e31b815260040160405180910390fd5b60008181526007602052604081205460035415612a48576000600781612997600187613a30565b815260200190815260200160002054905080821015612a465760006129ba6120de565b905060005b8151811015612a40576008600087815260200190815260200160002060008383815181106129ef576129ef613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060000154600014612a38576000868152600760205260409020839055612a40565b6001016129bf565b50819250505b505b80612a51611d1b565b1015612a6457612a5f612c43565b612a48565b60006003612a7183611a3f565b612a7c906002613b01565b612a869190613a03565b612a9190600161397f565b90506000612a9d6120de565b90506000805b8251811015612bac576000838281518110612ac057612ac0613aeb565b60209081029190910181015160008a81526008835260408082206001600160a01b03841683528452908190208151606081018352815480825260018301549582019590955260029091015491810191909152909250908914612b23575050612ba4565b80516000908152600960209081526040808320828501518452909152902054868110612ba05781516000908152600a60209081526040808320828601518452909152902054600554612b75908261397f565b421015612b855750505050612bac565b612b8f8333612fa2565b5060019a9950505050505050505050565b5050505b600101612aa3565b5080158015612bc85750612bbe611d1b565b612bc6611956565b115b15612be157612bd5612c43565b50600195945050505050565b50600095945050505050565b612bf68261325b565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115612c3b576118e382826132c0565b611b7d613336565b6000612c4d611d1b565b90506000612c596120de565b905060005b8151811015612f6057600083815260146020526040812083518290859085908110612c8b57612c8b613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612de6576000612cde838381518110612cd157612cd1613aeb565b6020026020010151611afe565b601654601460008781526020019081526020016000206000868681518110612d0857612d08613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612d3b9190613b01565b612d459190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612d6f57612d6f613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612dcc57600080fd5b505af1158015612de0573d6000803e3d6000fd5b50505050505b600083815260156020526040812083518290859085908110612e0a57612e0a613aeb565b60200260200101516001600160a01b03166001600160a01b03168152602001908152602001600020541115612f58576000612e50838381518110612cd157612cd1613aeb565b601754601560008781526020019081526020016000206000868681518110612e7a57612e7a613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002054612ead9190613b01565b612eb79190613b01565b60005484519192506001600160a01b031690635e00bf4690859085908110612ee157612ee1613aeb565b60209081029190910101516001546040516001600160e01b031960e085901b1681526001600160a01b0392831660048201526024810186905291166044820152606401600060405180830381600087803b158015612f3e57600080fd5b505af1158015612f52573d6000803e3d6000fd5b50505050505b600101612c5e565b506000805460408051632a21edc760e21b815290516001600160a01b039092169263a887b71c9260048084019382900301818387803b1580156122d857600080fd5b6000612fac611d1b565b83516000908152600760205260409020549091508114612fdf57604051631f2d18b160e31b815260040160405180910390fd5b8251612fed90600190613a30565b6003541461300e57604051631f2d18b160e31b815260040160405180910390fd5b60006130186120de565b905060005b81518110156130f55784602001516008600087600001518152602001908152602001600020600084848151811061305657613056613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060010154036130ed576014600084815260200190815260200160002060008383815181106130ae576130ae613aeb565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060008154809291906130e790613b5a565b91905055505b60010161301d565b506130ff84611271565b6131415760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061313690849061397f565b9091555061319a9050565b826001600160a01b03166131536117a6565b6001600160a01b03160361319a5760008281526015602090815260408083206001600160a01b0387168452909152812080546001929061319490849061397f565b90915550505b601354600090815260126020908152604080832087518452825280832087518082558884018051600184015589840180516002909401939093556003829055908552600b845282852080546001600160a01b0319166001600160a01b038a1617905588518552600d845282852043905588518552600e84529382902042905551925187518251918252928101929092527fc28fbeddd1d6ba9496d1b91564f9aa2bc4dffed78aae631bbc6ef67296ad3c3c910160405180910390a250505050565b806001600160a01b03163b60000361329157604051634c9c8ce360e01b81526001600160a01b038216600482015260240161125c565b600080516020613bb083398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516132dd9190613b73565b600060405180830381855af49150503d8060008114613318576040519150601f19603f3d011682016040523d82523d6000602084013e61331d565b606091505b509150915061332d858383613355565b95945050505050565b34156116b45760405163b398979f60e01b815260040160405180910390fd5b60608261336a57613365826133b1565b6111dc565b815115801561338157506001600160a01b0384163b155b156133aa57604051639996b31560e01b81526001600160a01b038516600482015260240161125c565b50806111dc565b8051156133c15780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b6000602082840312156133ec57600080fd5b81356001600160e01b0319811681146111dc57600080fd5b60008060006060848603121561341957600080fd5b505081359360208301359350604090920135919050565b60006020828403121561344257600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561348757613487613449565b604052919050565b6000606082840312156134a157600080fd5b604051606081016001600160401b03811182821017156134c3576134c3613449565b60409081528335825260208085013590830152928301359281019290925250919050565b6000606082840312156134f957600080fd5b6111dc838361348f565b6001600160a01b038116811461126e57600080fd5b60006001600160401b0382111561353157613531613449565b5060051b60200190565b600082601f83011261354c57600080fd5b813561355f61355a82613518565b61345f565b8082825260208201915060208360051b86010192508583111561358157600080fd5b602085015b838110156135a757803561359981613503565b835260209283019201613586565b5095945050505050565b600080600080600080600060e0888a0312156135cc57600080fd5b87356135d781613503565b965060208801359550604088013594506060880135935060808801356001600160401b0381111561360757600080fd5b6136138a828b0161353b565b93505060a0880135915060c088013561362b81613503565b8091505092959891949750929550565b6000806040838503121561364e57600080fd5b82359150602083013561366081613503565b809150509250929050565b6000806040838503121561367e57600080fd5b50508035926020909101359150565b60006020828403121561369f57600080fd5b81356111dc81613503565b6000602082840312156136bc57600080fd5b81356001600160401b038111156136d257600080fd5b611dd08482850161353b565b600080604083850312156136f157600080fd5b82356136fc81613503565b915060208301356001600160401b0381111561371757600080fd5b8301601f8101851361372857600080fd5b80356001600160401b0381111561374157613741613449565b613754601f8201601f191660200161345f565b81815286602083850101111561376957600080fd5b816020840160208301376000602083830101528093505050509250929050565b60006020828403121561379b57600080fd5b81356001600160401b038111156137b157600080fd5b8201601f810184136137c257600080fd5b80356137d061355a82613518565b808282526020820191506020606084028501019250868311156137f257600080fd5b6020840193505b8284101561381e5761380b878561348f565b82526020820191506060840193506137f9565b9695505050505050565b60008060006060848603121561383d57600080fd5b83359250602084013561384f81613503565b9150604084013561385f81613503565b809150509250925092565b600081518084526020840193506020830160005b828110156138a55781516001600160a01b031686526020958601959091019060010161387e565b5093949350505050565b6020815260006111dc602083018461386a565b60005b838110156138dd5781810151838201526020016138c5565b50506000910152565b60208152600082518060208401526139058160408501602087016138c2565b601f01601f19169190910160400192915050565b6000806040838503121561392c57600080fd5b823561393781613503565b9150602083013561366081613503565b60006020828403121561395957600080fd5b813580151581146111dc57600080fd5b634e487b7160e01b600052601160045260246000fd5b808201808211156111a3576111a3613969565b60208082526022908201527f554e415554484f52495a45445f5355504552424c4f434b5f434f4d4d49544d45604082015261139560f21b606082015260800190565b828152604060208201526000611dd0604083018461386a565b634e487b7160e01b600052601260045260246000fd5b600082613a1257613a126139ed565b500490565b600060208284031215613a2957600080fd5b5051919050565b818103818111156111a3576111a3613969565b600060208284031215613a5557600080fd5b81516001600160401b03811115613a6b57600080fd5b8201601f81018413613a7c57600080fd5b8051613a8a61355a82613518565b8082825260208201915060208360051b850101925086831115613aac57600080fd5b6020840193505b8284101561381e578351613ac681613503565b825260209384019390910190613ab3565b600082613ae657613ae66139ed565b500690565b634e487b7160e01b600052603260045260246000fd5b80820281158282048414176111a3576111a3613969565b60208082526022908201527f4144445f434f4d4d49544d454e545f41444d494e5f49535f41444d494e5f4f4e6040820152614c5960f01b606082015260800190565b600060018201613b6c57613b6c613969565b5060010190565b60008251613b858184602087016138c2565b919091019291505056fedb2bf73e90d393604e56f0a2a54fed3fbd75332bf39c5ea0704b3b6973a3463c360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800981fe5f60e354ed88ff0544e367c13a4d3342da7c82eb6627f804b747e046e18a2646970667358221220656f27229b704d593f2433b2c2e9c811cafaa061388018f7b6de9dc5e07be8b664736f6c634300081a0033","sourceMap":"545:34560:107:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3443:202:19;;;;;;;;;;-1:-1:-1;3443:202:19;;;;;:::i;:::-;;:::i;:::-;;;470:14:140;;463:22;445:41;;433:2;418:18;3443:202:19;;;;;;;;11507:242:107;;;;;;;;;;-1:-1:-1;11507:242:107;;;;;:::i;:::-;;:::i;:::-;;;;1210:13:140;;1192:32;;1280:4;1268:17;;;1262:24;1240:20;;;1233:54;1331:17;;;1325:24;1303:20;;;1296:54;1180:2;1165:18;11507:242:107;968:388:140;6474:129:107;;;;;;;;;;-1:-1:-1;6566:30:107;;6474:129;;;1507:25:140;;;1495:2;1480:18;6474:129:107;1361:177:140;1406:41:108;;;;;;;;;;;;;;;;3846:77;;;;;;;;;;-1:-1:-1;3846:77:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;18935:308:107;;;;;;;;;;-1:-1:-1;18935:308:107;;;;;:::i;:::-;;:::i;:::-;;24959:683;;;;;;;;;;-1:-1:-1;24959:683:107;;;;;:::i;:::-;;:::i;33689:155::-;;;;;;;;;;-1:-1:-1;33689:155:107;;;;;:::i;:::-;;:::i;13996:337::-;;;;;;;;;;-1:-1:-1;13996:337:107;;;;;:::i;:::-;;:::i;2789:1624::-;;;;;;;;;;-1:-1:-1;2789:1624:107;;;;;:::i;:::-;;:::i;5413:111::-;;;;;;;;;;-1:-1:-1;5496:21:107;;5413:111;;33525:158;;;;;;;;;;;;;:::i;5318:107:108:-;;;;;;;;;;-1:-1:-1;5318:107:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;32361:287:107;;;;;;;;;;-1:-1:-1;32361:287:107;;;;;:::i;:::-;;:::i;7053:533::-;;;;;;;;;;-1:-1:-1;7053:533:107;;;;;:::i;:::-;;:::i;4759:191:19:-;;;;;;;;;;-1:-1:-1;4759:191:19;;;;;:::i;:::-;;:::i;17045:115:107:-;;;;;;;;;;;;;:::i;19249:200::-;;;;;;;;;;-1:-1:-1;19249:200:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;19402:31:107;;19368:66;;:33;:66;;;;;:74;;;;;;;;;;19361:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19249:200;5246:136:19;;;;;;;;;;-1:-1:-1;5246:136:19;;;;;:::i;:::-;;:::i;18335:405:107:-;;;;;;;;;;-1:-1:-1;18335:405:107;;;;;:::i;:::-;;:::i;9951:929::-;;;;;;;;;;;;;:::i;:::-;;;-1:-1:-1;;;;;6818:32:140;;;6800:51;;6788:2;6773:18;9951:929:107;6654:203:140;6348:245:19;;;;;;;;;;-1:-1:-1;6348:245:19;;;;;:::i;:::-;;:::i;8946:165:107:-;;;;;;;;;;;;;:::i;8574:133::-;;;;;;;;;;;;;:::i;4950:118:108:-;;;;;;;;;;-1:-1:-1;4950:118:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7415:25:140;;;7471:2;7456:18;;7449:34;;;;7499:18;;;7492:34;7403:2;7388:18;4950:118:108;7213:319:140;4837:570:107;;;;;;;;;;-1:-1:-1;4837:570:107;;;;;:::i;:::-;;:::i;32654:607::-;;;;;;;;;;-1:-1:-1;32654:607:107;;;;;:::i;:::-;;:::i;32108:176::-;;;;;;;;;;-1:-1:-1;32108:176:107;;;;;:::i;:::-;;:::i;1866:326::-;;;;;;;;;;-1:-1:-1;1866:326:107;;;;;:::i;:::-;;:::i;1978:36:108:-;;;;;;;;;;;;;;;;4161:214:21;;;;;;:::i;:::-;;:::i;3708:134::-;;;;;;;;;;;;;:::i;14774:209:107:-;;;;;;;;;;-1:-1:-1;14774:209:107;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;14947:19:107;;;;:11;:19;;;;;;;;-1:-1:-1;;;;;14947:29:107;;;;;;;;;;;;;14940:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14774:209;2261:45:108;;;;;;;;;;;;;;;;33850:165:107;;;;;;;;;;-1:-1:-1;33850:165:107;;;;;:::i;:::-;;:::i;405:31:108:-;;;;;;;;;;-1:-1:-1;405:31:108;;;;-1:-1:-1;;;;;405:31:108;;;16904:135:107;;;;;;;;;;-1:-1:-1;16999:33:107;;16904:135;;8131:129;;;;;;;;;;;;;:::i;764:72::-;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;764:72:107;;9197:414;;;;;;;;;;;;;:::i;5480:40:108:-;;;;;;;;;;;;;;;;14339:430:107;;;;;;;;;;-1:-1:-1;14339:430:107;;;;;:::i;:::-;;:::i;34093:157::-;;;;;;;;;;-1:-1:-1;34093:157:107;;;;;:::i;:::-;34180:7;34206:27;;;:20;:27;;;;;;;;-1:-1:-1;;;;;34206:37:107;;;;;;;;;;;;;34093:157;8745:131;;;;;;;;;;;;;:::i;5168:97:108:-;;;;;;;;;;-1:-1:-1;5168:97:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;30800:311:107;;;;;;;;;;-1:-1:-1;30800:311:107;;;;;:::i;:::-;;:::i;4005:94:108:-;;;;;;;;;;-1:-1:-1;4005:94:108;;;;;:::i;:::-;;;;;;;;;;;;;;4539:109;;;;;;;;;;-1:-1:-1;4539:109:108;;;;;:::i;:::-;;;;;;;;;;;;;;654:72:107;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;654:72:107;;528:89:110;;;;;;;;;;;;;:::i;2198:136:107:-;;;;;;;;;;-1:-1:-1;2198:136:107;;;;;:::i;:::-;;:::i;2880:87:108:-;;;;;;;;;;-1:-1:-1;2880:87:108;;;;;:::i;:::-;;;;;;;;;;;;;;8331:207:107;;;;;;;;;;;;;:::i;3625:76:108:-;;;;;;;;;;-1:-1:-1;3625:76:108;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;3625:76:108;;;3732:207:19;;;;;;;;;;-1:-1:-1;3732:207:19;;;;;:::i;:::-;;:::i;4465:195:107:-;;;;;;;;;;;;;:::i;15037:159::-;;;;;;;;;;;;;:::i;1623:237::-;;;;;;;;;;-1:-1:-1;1623:237:107;;;;;:::i;:::-;;:::i;4336:100:108:-;;;;;;;;;;-1:-1:-1;4336:100:108;;;;;:::i;:::-;;;;;;;;;;;;;;2317:49:19;;;;;;;;;;-1:-1:-1;2317:49:19;2362:4;2317:49;;34600:177:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;7592:139::-;;;;;;;;;;-1:-1:-1;7689:35:107;;7592:139;;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;31543:484:107:-;;;;;;;;;;-1:-1:-1;31543:484:107;;;;;:::i;:::-;;:::i;31211:198::-;;;;;;;;;;-1:-1:-1;31211:198:107;;;;;:::i;:::-;;:::i;2106:50:108:-;;;;;;;;;;;;;;;;3248:105;;;;;;;;;;-1:-1:-1;3248:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;2340:226:107;;;;;;;;;;-1:-1:-1;2340:226:107;;;;;:::i;:::-;;:::i;11026:250::-;;;;;;;;;;-1:-1:-1;11026:250:107;;;;;:::i;:::-;;:::i;7737:132::-;;;;;;;;;;-1:-1:-1;7737:132:107;;;;;:::i;:::-;;:::i;15520:149::-;;;;;;;;;;-1:-1:-1;15520:149:107;;;;;:::i;:::-;15599:7;15625:37;;;:29;:37;;;;;;;15520:149;5580:45:108;;;;;;;;;;;;;;;;33339:180:107;;;;;;;;;;-1:-1:-1;33339:180:107;;;;;:::i;:::-;;:::i;5662:138:19:-;;;;;;;;;;-1:-1:-1;5662:138:19;;;;;:::i;:::-;;:::i;3436:114:108:-;;;;;;;;;;-1:-1:-1;3436:114:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;5787:464:107;;;;;;;;;;-1:-1:-1;5787:464:107;;;;;:::i;:::-;;:::i;15875:221::-;;;;;;;;;;-1:-1:-1;15875:221:107;;;;;:::i;:::-;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;15875:221;34783:133;;;;;;;;;;-1:-1:-1;34783:133:107;;;;;:::i;:::-;34843:4;34866:19;;;:11;:19;;;;;;;;34886:10;34866:31;;;;;;;:38;:43;;;34783:133;3049:105:108;;;;;;;;;;-1:-1:-1;3049:105:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5074:46;;;;;;;;;;;;;;;;34922:180:107;;;;;;;;;;-1:-1:-1;34922:180:107;;;;;:::i;:::-;35043:31;;34986:4;35009:66;;;:33;:66;;;;;;;;:74;;;;;;;:81;:86;;;34922:180;34336:177;;;;;;;;;;-1:-1:-1;34336:177:107;;;;;:::i;:::-;34433:7;34459:32;;;:25;:32;;;;;;;;-1:-1:-1;;;;;34459:47:107;;;;;;;;;;;;;34336:177;4718:89:108;;;;;;;;;;-1:-1:-1;4718:89:108;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;261:39;;;;;;;;;;-1:-1:-1;261:39:108;;;;-1:-1:-1;;;;;261:39:108;;;4855:34;;;;;;;;;;-1:-1:-1;4855:34:108;;;;;;;;1598:48;;;;;;;;;;;;;;;;3443:202:19;3528:4;-1:-1:-1;;;;;;3551:47:19;;-1:-1:-1;;;3551:47:19;;:87;;-1:-1:-1;;;;;;;;;;1134:40:27;;;3602:36:19;3544:94;3443:202;-1:-1:-1;;3443:202:19:o;11507:242:107:-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;11693:49:107;;;;;;;;;;;;;;;;;;;;;;11507:242;;;;;;:::o;18935:308::-;19054:37;-1:-1:-1;;;;;;;;;;;19080:10:107;19054:7;:37::i;:::-;19033:132;;;;-1:-1:-1;;;19033:132:107;;13469:2:140;19033:132:107;;;13451:21:140;13508:2;13488:18;;;13481:30;13547:34;13527:18;;;13520:62;-1:-1:-1;;;13598:18:140;;;13591:46;13654:19;;19033:132:107;;;;;;;;;19175:61;19215:20;19175:39;:61::i;:::-;18935:308;:::o;24959:683::-;16028:27;;25078:4;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25148:1;25098:51;25094:94;;-1:-1:-1;25172:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25094:94::-;25561:15;25510:35;6566:30;;;6474:129;25510:35;7689;;16028:27;;15980:7;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;25392:102;;;;:::i;:::-;:153;;;;:::i;:::-;:184;25388:227;;;-1:-1:-1;25599:5:107;;24959:683;-1:-1:-1;24959:683:107:o;25388:227::-;-1:-1:-1;25631:4:107;;24959:683;-1:-1:-1;24959:683:107:o;33689:155::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33795:25:107::1;:42:::0;33689:155::o;13996:337::-;14122:22;;;;;:63;;;14148:37;-1:-1:-1;;;;;;;;;;;14174:10:107;14148:7;:37::i;:::-;14101:144;;;;-1:-1:-1;;;14101:144:107;;;;;;;:::i;:::-;14255:71;14293:10;14305:20;14255:37;:71::i;2789:1624::-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;3225:33:107::1;:31;:33::i;:::-;3268:15;:34:::0;;-1:-1:-1;;;;;;3268:34:107::1;-1:-1:-1::0;;;;;3268:34:107;::::1;::::0;;::::1;::::0;;;3312:26:::1;:56:::0;;;3378:33:::1;:70:::0;;;3458:59:::1;::::0;-1:-1:-1;;;3458:59:107;;:30:::1;::::0;:59:::1;::::0;3489:14;;3505:11;;3458:59:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;3527:32;3548:10;3527:20;:32::i;:::-;3569;3590:10;3569:20;:32::i;:::-;3611:21;:46:::0;;;3667:16:::1;:36:::0;;-1:-1:-1;;;;;;3667:36:107::1;-1:-1:-1::0;;;;;3667:36:107;::::1;;::::0;;4242:19:::1;4259:2;4242:14:::0;:19:::1;:::i;:::-;4204:35;:57:::0;4304:19:::1;4321:2;4304:14:::0;:19:::1;:::i;:::-;4271:30;:52:::0;4361:1:::1;4333:25;:29:::0;;;4372:30:::1;:34:::0;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;2789:1624:107;;;;;;;:::o;33525:158::-;33612:7;33642:34;33656:19;:17;:19::i;33642:34::-;33635:41;;33525:158;:::o;32361:287::-;32465:7;32503:15;;:138;;-1:-1:-1;;;32503:138:107;;32562:4;32503:138;;;15359:51:140;15426:18;;;15419:34;;;-1:-1:-1;;;;;15489:32:140;;;15469:18;;;15462:60;32503:15:107;;;;:33;;15332:18:140;;32503:138:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;7053:533::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;6566:30:107;;7333:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;7333:47:107;;7374:4:::1;7333:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;7333:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;7333:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:85;;;;:::i;:::-;7293:36;:125;7289:207;;7441:44;;-1:-1:-1::0;;;7441:44:107::1;;;;;;;;;;;7289:207;-1:-1:-1::0;7505:35:107::1;:74:::0;7053:533::o;4759:191:19:-;4824:7;4919:14;;;-1:-1:-1;;;;;;;;;;;4919:14:19;;;;;:24;;;;4759:191::o;17045:115:107:-;17107:46;17142:10;17107:34;:46::i;:::-;17045:115::o;5246:136:19:-;5320:18;5333:4;5320:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5350:25:::1;5361:4;5367:7;5350:10;:25::i;:::-;;5246:136:::0;;;:::o;18335:405:107:-;18472:37;-1:-1:-1;;;;;;;;;;;18498:10:107;18472:7;:37::i;:::-;18451:152;;;;-1:-1:-1;;;18451:152:107;;16057:2:140;18451:152:107;;;16039:21:140;16096:2;16076:18;;;16069:30;;;16135:34;16115:18;;;16108:62;16206:34;16186:18;;;16179:62;-1:-1:-1;;;16257:19:140;;;16250:35;16302:19;;18451:152:107;15855:472:140;18451:152:107;18647:31;;18613:66;;;;:33;:66;;;;;;;;18680:27;;18613:95;;;;;;;;:118;;;;;;;;;;;;;;;;;;;;18335:405::o;9951:929::-;10000:7;10392:17;10412:27;:25;:27::i;:::-;10392:47;;10449:17;10469:19;:17;:19::i;:::-;10498:26;10527:15;;:66;;-1:-1:-1;;;10527:66:107;;10587:4;10527:66;;;6800:51:140;10449:39:107;;-1:-1:-1;10498:26:107;;-1:-1:-1;;;;;10527:15:107;;;;:51;;6773:18:140;;10527:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10527:66:107;;;;;;;;;;;;:::i;:::-;10498:95;;10607:9;:16;10627:1;10607:21;10603:69;;10659:1;10644:17;;;;;9951:929;:::o;10603:69::-;10681:26;10771:9;:16;10745:9;10756;10728:38;;;;;;;;17463:19:140;;;17507:2;17498:12;;17491:28;17544:2;17535:12;;17306:247;10728:38:107;;;;;;;;;;;;;10718:49;;;;;;10710:58;;:77;;;;:::i;:::-;10681:106;;10844:9;10854:18;10844:29;;;;;;;;:::i;:::-;;;;;;;10837:36;;;;;;9951:929;:::o;6348:245:19:-;-1:-1:-1;;;;;6441:34:19;;966:10:24;6441:34:19;6437:102;;6498:30;;-1:-1:-1;;;6498:30:19;;;;;;;;;;;6437:102;6549:37;6561:4;6567:18;6549:11;:37::i;:::-;;6348:245;;:::o;8946:165:107:-;9013:7;9039:15;;:65;;-1:-1:-1;;;9039:65:107;;9098:4;9039:65;;;6800:51:140;-1:-1:-1;;;;;9039:15:107;;;;:50;;6773:18:140;;9039:65:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;8574:133::-;8622:7;8648:15;;:52;;-1:-1:-1;;;8648:52:107;;8694:4;8648:52;;;6800:51:140;-1:-1:-1;;;;;8648:15:107;;;;:37;;6773:18:140;;8648:52:107;6654:203:140;4837:570:107;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;5033:21:107::1;5057:15:::0;;:47:::1;::::0;-1:-1:-1;;;5057:47:107;;5098:4:::1;5057:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;5057:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;5057:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5033:71:::0;-1:-1:-1;5033:71:107;5229:26:::1;5233:22:::0;5229:1:::1;:26;:::i;:::-;:43;5225:120;;5296:38;;-1:-1:-1::0;;;5296:38:107::1;;;;;;;;;;;5225:120;-1:-1:-1::0;;5354:21:107::1;:46:::0;4837:570::o;32654:607::-;32727:7;32929:15;;:76;;-1:-1:-1;;;32929:76:107;;32990:4;32929:76;;;6800:51:140;32727:7:107;;-1:-1:-1;;;;;32929:15:107;;:39;;6773:18:140;;32929:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;32929:76:107;;;;;;;;;;;;:::i;:::-;32899:106;;33015:18;33052:9;33047:181;33071:10;:17;33067:1;:21;33047:181;;;33178:39;33196:5;33203:10;33214:1;33203:13;;;;;;;;:::i;:::-;;;;;;;33178:17;:39::i;:::-;33164:53;;;;:::i;:::-;;-1:-1:-1;33090:3:107;;33047:181;;;-1:-1:-1;33244:10:107;32654:607;-1:-1:-1;;;32654:607:107:o;32108:176::-;32204:7;32230:47;32247:19;:17;:19::i;:::-;32268:8;32230:16;:47::i;1866:326::-;1966:39;2362:4:19;1994:10:107;1966:7;:39::i;:::-;1945:120;;;;-1:-1:-1;;;1945:120:107;;;;;;;:::i;:::-;2080:9;2075:111;2099:8;:15;2095:1;:19;2075:111;;;2135:40;-1:-1:-1;;;;;;;;;;;2163:8:107;2172:1;2163:11;;;;;;;;:::i;:::-;;;;;;;2135:9;:40::i;:::-;2116:3;;2075:111;;;;1866:326;:::o;4161:214:21:-;2655:13;:11;:13::i;:::-;4276:36:::1;4294:17;4276;:36::i;:::-;4322:46;4344:17;4363:4;4322:21;:46::i;3708:134::-:0;3777:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3708:134:21;:::o;33850:165:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;33961:30:107::1;:47:::0;33850:165::o;8131:129::-;8180:7;8206:15;;:47;;-1:-1:-1;;;8206:47:107;;8247:4;8206:47;;;6800:51:140;-1:-1:-1;;;;;8206:15:107;;;;:32;;6773:18:140;;8206:47:107;6654:203:140;9197:414:107;9255:7;9471:15;;:47;;-1:-1:-1;;;9471:47:107;;9512:4;9471:47;;;6800:51:140;9296:15:107;;9255:7;;-1:-1:-1;;;;;9471:15:107;;;;:32;;6773:18:140;;9471:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9457:61;;:11;:61;:::i;:::-;9426:92;;9582:21;;9559:20;:44;;;;:::i;:::-;9535:69;;:20;:69;:::i;:::-;9528:76;;;;9197:414;:::o;14339:430::-;14471:22;;;;;:63;;;14497:37;-1:-1:-1;;;;;;;;;;;14523:10:107;14497:7;:37::i;:::-;14450:144;;;;-1:-1:-1;;;14450:144:107;;;;;;;:::i;:::-;14609:9;14604:159;14628:21;:28;14624:1;:32;14604:159;;;14677:75;14715:10;14727:21;14749:1;14727:24;;;;;;;;:::i;:::-;;;;;;;14677:37;:75::i;:::-;14658:3;;14604:159;;8745:131;8795:7;8821:15;;:48;;-1:-1:-1;;;8821:48:107;;8863:4;8821:48;;;6800:51:140;-1:-1:-1;;;;;8821:15:107;;;;:33;;6773:18:140;;8821:48:107;6654:203:140;30800:311:107;30921:7;30959:15;;:145;;-1:-1:-1;;;30959:145:107;;31009:4;30959:145;;;18614:51:140;18681:18;;;18674:34;;;-1:-1:-1;;;;;18744:32:140;;;18724:18;;;18717:60;18813:32;;;18793:18;;;18786:60;30959:15:107;;;;:24;;18586:19:140;;30959:145:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;30940:164;30800:311;-1:-1:-1;;;;30800:311:107:o;528:89:110:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;587:23:110::1;:21;:23::i;:::-;5070:14:20::0;5066:101;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;15096:50:140;;5142:14:20;;15084:2:140;15069:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;528:89:110:o;2198:136:107:-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2290:37:107::1;-1:-1:-1::0;;;;;;;;;;;2318:8:107::1;2290:9;:37::i;8331:207::-:0;8381:7;8483:15;;:47;;-1:-1:-1;;;8483:47:107;;8524:4;8483:47;;;6800:51:140;8422:15:107;;-1:-1:-1;;;;;8483:15:107;;:32;;6773:18:140;;8483:47:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8469:61;;:11;:61;:::i;:::-;8454:77;;:11;:77;:::i;:::-;8447:84;;;8331:207;:::o;3732::19:-;3809:4;3901:14;;;-1:-1:-1;;;;;;;;;;;3901:14:19;;;;;;;;-1:-1:-1;;;;;3901:31:19;;;;;;;;;;;;;;;3732:207::o;4465:195:107:-;4523:39;2362:4:19;4551:10:107;4523:7;:39::i;:::-;4515:89;;;;-1:-1:-1;;;4515:89:107;;19059:2:140;4515:89:107;;;19041:21:140;19098:2;19078:18;;;19071:30;19137:34;19117:18;;;19110:62;-1:-1:-1;;;19188:18:140;;;19181:35;19233:19;;4515:89:107;18857:401:140;4515:89:107;4614:15;;;:39;;;-1:-1:-1;;;4614:39:107;;;;-1:-1:-1;;;;;4614:15:107;;;;:37;;:39;;;;;;;;;;:15;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;15037:159;15101:7;15163:26;;15127:33;;:62;;;;:::i;1623:237::-;1708:39;2362:4:19;1736:10:107;1708:7;:39::i;:::-;1687:120;;;;-1:-1:-1;;;1687:120:107;;;;;;;:::i;:::-;1817:36;-1:-1:-1;;;;;;;;;;;1845:7:107;1817:9;:36::i;34600:177::-;34703:15;;:66;;-1:-1:-1;;;34703:66:107;;34763:4;34703:66;;;6800:51:140;34668:16:107;;-1:-1:-1;;;;;34703:15:107;;:51;;6773:18:140;;34703:66:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;34703:66:107;;;;;;;;;;;;:::i;31543:484::-;31645:7;31694:15;;:76;;-1:-1:-1;;;31694:76:107;;31755:4;31694:76;;;6800:51:140;31645:7:107;;-1:-1:-1;;;;;31694:15:107;;:39;;6773:18:140;;31694:76:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31694:76:107;;;;;;;;;;;;:::i;:::-;31664:106;;31780:18;31817:9;31812:182;31836:10;:17;31832:1;:21;31812:182;;;31943:40;31952:5;31959:10;31970:1;31959:13;;;;;;;;:::i;:::-;;;;;;;31974:8;31943;:40::i;:::-;31929:54;;;;:::i;:::-;;-1:-1:-1;31855:3:107;;31812:182;;;-1:-1:-1;32010:10:107;31543:484;-1:-1:-1;;;;31543:484:107:o;31211:198::-;31326:7;31352:50;31361:19;:17;:19::i;:::-;31382:9;31393:8;31352;:50::i;2340:226::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;2452:9:107::1;2447:113;2471:9;:16;2467:1;:20;2447:113;;;2508:41;-1:-1:-1::0;;;;;;;;;;;2536:9:107::1;2546:1;2536:12;;;;;;;;:::i;2508:41::-;2489:3;;2447:113;;11026:250:::0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;11211:15:107::1;::::0;:58:::1;::::0;-1:-1:-1;;;11211:58:107;;11253:4:::1;11211:58;::::0;::::1;19437:51:140::0;19504:18;;;19497:34;;;-1:-1:-1;;;;;11211:15:107;;::::1;::::0;:33:::1;::::0;19410:18:140;;11211:58:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11026:250:::0;;:::o;7737:132::-;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;-1:-1:-1;7830:22:107::1;:32:::0;;-1:-1:-1;;7830:32:107::1;::::0;::::1;;::::0;;;::::1;::::0;;7737:132::o;33339:180::-;33437:7;33463:49;33481:19;:17;:19::i;:::-;33502:9;33463:17;:49::i;5662:138:19:-;5737:18;5750:4;5737:12;:18::i;:::-;3191:16;3202:4;3191:10;:16::i;:::-;5767:26:::1;5779:4;5785:7;5767:11;:26::i;5787:464:107:-:0;-1:-1:-1;;;;;;;;;;;3191:16:19;3202:4;3191:10;:16::i;:::-;7689:35:107;;6008:15:::1;::::0;:47:::1;::::0;-1:-1:-1;;;6008:47:107;;6049:4:::1;6008:47;::::0;::::1;6800:51:140::0;-1:-1:-1;;;;;6008:15:107;;::::1;::::0;:32:::1;::::0;6773:18:140;;6008:47:107::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:90;;;;:::i;:::-;5973:31;:125;5969:202;;6121:39;;-1:-1:-1::0;;;6121:39:107::1;;;;;;;;;;;5969:202;-1:-1:-1::0;6180:30:107::1;:64:::0;5787:464::o;4148:103:19:-;4214:30;4225:4;966:10:24;4214::19;:30::i;11817:2174:107:-;12062:27;;12050:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;12050:50:107;;;;;;;;;:57;:62;12046:113;;12133:26;;-1:-1:-1;;;12133:26:107;;;;;;;;;;;12046:113;12630:27;;12601:26;;12565:33;;:62;;12601:26;12565:62;:::i;:::-;:92;12561:156;;;12680:26;;-1:-1:-1;;;12680:26:107;;;;;;;;;;;12561:156;13081:27;;13051:58;;;;:29;:58;;;;;;:63;;13047:172;;13191:17;:15;:17::i;:::-;13160:27;;13130:58;;;;:29;:58;;;;;:78;13047:172;13287:27;;13275:40;;;;:11;:40;;;;;;;;-1:-1:-1;;;;;13275:50:107;;;;;;;;;;:73;;;;;;;;;;;;;;;;;;;;;;;;13425:106;;13515:15;13425:27;:106::i;:::-;13593:38;13634:43;13668:8;13634:33;:43::i;:::-;13703:27;;13687:44;;;;:15;:44;;;;;;;;13732:31;;;;13687:77;;;;;;;:111;;13593:84;;-1:-1:-1;13593:84:107;;13687:77;;:44;:111;;13593:84;;13687:111;:::i;:::-;;;;-1:-1:-1;;13857:28:107;;;;;13899:31;;;;;13814:170;;19716:25:140;;;19757:18;;;19750:34;;;13857:28:107;;13814:170;;19689:18:140;13814:170:107;;;;;;;11963:2028;11817:2174;;:::o;738:128:110:-;6931:20:20;:18;:20::i;:::-;817:42:110::1;2362:4:19;848:10:110;817;:42::i;17774:485:107:-:0;18173:67;18202:33;;18238:1;18202:37;;;;:::i;:::-;18173:28;:67::i;:::-;18166:87;;17774:485;:::o;7270:387:19:-;7347:4;-1:-1:-1;;;;;;;;;;;7437:22:19;7445:4;7451:7;7437;:22::i;:::-;7432:219;;7475:8;:14;;;;;;;;;;;-1:-1:-1;;;;;7475:31:19;;;;;;;;;:38;;-1:-1:-1;;7475:38:19;7509:4;7475:38;;;7559:12;966:10:24;;887:96;7559:12:19;-1:-1:-1;;;;;7532:40:19;7550:7;-1:-1:-1;;;;;7532:40:19;7544:4;7532:40;;;;;;;;;;7593:4;7586:11;;;;;7432:219;7635:5;7628:12;;;;;7892:388;7970:4;-1:-1:-1;;;;;;;;;;;8059:22:19;8067:4;8073:7;8059;:22::i;:::-;8055:219;;;8131:5;8097:14;;;;;;;;;;;-1:-1:-1;;;;;8097:31:19;;;;;;;;;;:39;;-1:-1:-1;;8097:39:19;;;8155:40;966:10:24;;8097:14:19;;8155:40;;8131:5;8155:40;8216:4;8209:11;;;;;4603:312:21;4683:4;-1:-1:-1;;;;;4692:6:21;4675:23;;;:120;;;4789:6;-1:-1:-1;;;;;4753:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:40;-1:-1:-1;;;;;1519:53:40;;1441:138;4753:32:21;-1:-1:-1;;;;;4753:42:21;;;4675:120;4658:251;;;4869:29;;-1:-1:-1;;;4869:29:21;;;;;;;;;;;991:117:110;2362:4:19;3191:16;2362:4;3191:10;:16::i;6057:538:21:-;6174:17;-1:-1:-1;;;;;6156:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6156:52:21;;;;;;;;-1:-1:-1;;6156:52:21;;;;;;;;;;;;:::i;:::-;;;6152:437;;6518:60;;-1:-1:-1;;;6518:60:21;;-1:-1:-1;;;;;6818:32:140;;6518:60:21;;;6800:51:140;6773:18;;6518:60:21;6654:203:140;6152:437:21;-1:-1:-1;;;;;;;;;;;6250:40:21;;6246:120;;6317:34;;-1:-1:-1;;;6317:34:21;;;;;1507:25:140;;;1480:18;;6317:34:21;1361:177:140;6246:120:21;6379:54;6409:17;6428:4;6379:29;:54::i;5032:213::-;5106:4;-1:-1:-1;;;;;5115:6:21;5098:23;;5094:145;;5199:29;;-1:-1:-1;;;5199:29:21;;;;;;;;;;;623:109:110;6931:20:20;:18;:20::i;:::-;692:33:110::1;:31;:33::i;4381:197:19:-:0;4469:22;4477:4;4483:7;4469;:22::i;:::-;4464:108;;4514:47;;-1:-1:-1;;;4514:47:19;;-1:-1:-1;;;;;19455:32:140;;4514:47:19;;;19437:51:140;19504:18;;;19497:34;;;19410:18;;4514:47:19;19263:274:140;16170:443:107;16285:29;;;;:21;:29;;;;;;;;:41;;;;;;;;;:46;16281:263;;16170:443;;;:::o;16281:263::-;16415:9;16428:1;16415:14;16411:133;;16170:443;;;:::o;16411:133::-;16553:29;;;;:21;:29;;;;;;;;:41;;;;;;;;:53;16170:443::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;25987:4503:107;26069:4;26111:47;;;:29;:47;;;;;;16999:33;;26168:1014;;;26426:31;26460:29;26426:31;26490:18;26507:1;26490:16;:18;:::i;:::-;26460:49;;;;;;;;;;;;26426:83;;26545:23;26527:15;:41;26523:649;;;26591:32;26626:37;:35;:37::i;:::-;26591:72;;26791:9;26786:313;26810:15;:22;26806:1;:26;26786:313;;;26865:11;:29;26877:16;26865:29;;;;;;;;;;;:49;26895:15;26911:1;26895:18;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;26865:49:107;-1:-1:-1;;;;;26865:49:107;;;;;;;;;;;;:56;;;26925:1;26865:61;26861:220;;26954:47;;;;:29;:47;;;;;:73;;;27053:5;;26861:220;26834:3;;26786:313;;;;27134:23;27116:41;;26573:599;26523:649;26307:875;26168:1014;27500:15;27478:19;:17;:19::i;:::-;:37;27471:249;;;27694:15;:13;:15::i;:::-;27471:249;;;27905:21;27968:1;27934:30;27948:15;27934:13;:30::i;:::-;27930:34;;:1;:34;:::i;:::-;27929:40;;;;:::i;:::-;:44;;27972:1;27929:44;:::i;:::-;27905:68;;27983:26;28012:37;:35;:37::i;:::-;27983:66;;28311:31;28365:9;28360:1688;28384:9;:16;28380:1;:20;28360:1688;;;28421:16;28440:9;28450:1;28440:12;;;;;;;;:::i;:::-;;;;;;;;;;;;28466:48;28517:29;;;:11;:29;;;;;;-1:-1:-1;;;;;28517:39:107;;;;;;;;;;28466:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28440:12;;-1:-1:-1;28466:90:107;28759:47;;28755:61;;28808:8;;;;28755:61;28935:27;;28886:30;28919:44;;;:15;:44;;;;;;;;28964:31;;;;28919:77;;;;;;;;29015:39;;;29011:1027;;16028:27;;29262:17;16006:50;;;:21;:50;;;;;;;;16057:31;;;;16006:83;;;;;;;;29443:35;;29431:47;;16006:83;29431:47;:::i;:::-;29413:15;:65;29409:76;;;29480:5;;;;;;29409:76;29504:66;29537:20;29559:10;29504:32;:66::i;:::-;-1:-1:-1;29617:4:107;;25987:4503;-1:-1:-1;;;;;;;;;;25987:4503:107:o;29011:1027::-;28407:1641;;;28360:1688;28402:3;;28360:1688;;;;30261:26;30260:27;:70;;;;;30311:19;:17;:19::i;:::-;30291:17;:15;:17::i;:::-;:39;30260:70;30256:206;;;30346:15;:13;:15::i;:::-;-1:-1:-1;30382:4:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;30256:206::-;-1:-1:-1;30478:5:107;;25987:4503;-1:-1:-1;;;;;25987:4503:107:o;2264:344:40:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:40;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;22785:1897:107:-;22897:22;22922:19;:17;:19::i;:::-;22897:44;;22951:26;22980:37;:35;:37::i;:::-;22951:66;;23059:9;23054:1580;23078:9;:16;23074:1;:20;23054:1580;;;23172:1;23119:36;;;:20;:36;;;;;23156:12;;23172:1;;23156:9;;23166:1;;23156:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23119:50:107;-1:-1:-1;;;;;23119:50:107;;;;;;;;;;;;;:54;23115:697;;;23273:14;23371:47;23405:9;23415:1;23405:12;;;;;;;;:::i;:::-;;;;;;;23371:33;:47::i;:::-;23343:25;;23290:20;:36;23311:14;23290:36;;;;;;;;;;;:50;23327:9;23337:1;23327:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23290:50:107;-1:-1:-1;;;;;23290:50:107;;;;;;;;;;;;;:78;;;;:::i;:::-;:128;;;;:::i;:::-;23563:15;;23596:12;;23273:145;;-1:-1:-1;;;;;;23563:15:107;;:32;;23596:9;;23606:1;;23596:12;;;;;;:::i;:::-;;;;;;;;;;;23618:16;;23563:72;;-1:-1:-1;;;;;;23563:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;23563:72:107;;;15359:51:140;15426:18;;;15419:34;;;23618:16:107;;15469:18:140;;;15462:60;15332:18;;23563:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23175:637;23115:697;23932:1;23874:41;;;:25;:41;;;;;23916:12;;23932:1;;23916:9;;23926:1;;23916:12;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23874:55:107;-1:-1:-1;;;;;23874:55:107;;;;;;;;;;;;;:59;23870:754;;;23953:14;24061:47;24095:9;24105:1;24095:12;;;;;;;;:::i;24061:47::-;24028:30;;23970:25;:41;23996:14;23970:41;;;;;;;;;;;:55;24012:9;24022:1;24012:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;23970:55:107;-1:-1:-1;;;;;23970:55:107;;;;;;;;;;;;;:88;;;;:::i;:::-;:138;;;;:::i;:::-;24126:15;;24159:12;;23953:155;;-1:-1:-1;;;;;;24126:15:107;;:32;;24159:9;;24169:1;;24159:12;;;;;;:::i;:::-;;;;;;;;;;;24181:16;;24126:72;;-1:-1:-1;;;;;;24126:72:107;;;;;;;-1:-1:-1;;;;;15377:32:140;;;24126:72:107;;;15359:51:140;15426:18;;;15419:34;;;24181:16:107;;15469:18:140;;;15462:60;15332:18;;24126:72:107;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23935:689;23870:754;23096:3;;23054:1580;;;-1:-1:-1;24644:15:107;;;:31;;;-1:-1:-1;;;24644:31:107;;;;-1:-1:-1;;;;;24644:15:107;;;;:29;;:31;;;;;;;;;;:15;;:31;;;;;;;;;;19647:2891;19776:29;19808:19;:17;:19::i;:::-;20102:27;;20072:58;;;;:29;:58;;;;;;19776:51;;-1:-1:-1;20072:83:107;;20068:155;;20178:34;;-1:-1:-1;;;20178:34:107;;;;;;;;;;;20068:155;20372:27;;:31;;20402:1;;20372:31;:::i;:::-;20335:33;;:68;20331:140;;20426:34;;-1:-1:-1;;;20426:34:107;;;;;;;;;;;20331:140;20571:26;20600:37;:35;:37::i;:::-;20571:66;;20652:9;20647:269;20671:9;:16;20667:1;:20;20647:269;;;20781:20;:31;;;20712:11;:40;20724:20;:27;;;20712:40;;;;;;;;;;;:54;20753:9;20763:1;20753:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20712:54:107;-1:-1:-1;;;;;20712:54:107;;;;;;;;;;;;:65;;;:100;20708:198;;20832:20;:43;20853:21;20832:43;;;;;;;;;;;:57;20876:9;20886:1;20876:12;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;;20832:57:107;-1:-1:-1;;;;;20832:57:107;;;;;;;;;;;;;:59;;;;;;;;;:::i;:::-;;;;;;20708:198;20689:3;;20647:269;;;;20972:60;21011:20;20972:38;:60::i;:::-;20967:900;;21157:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21157:58:107;;;;;;;;;:63;;21219:1;;21157:48;:63;;21219:1;;21157:63;:::i;:::-;;;;-1:-1:-1;20967:900:107;;-1:-1:-1;20967:900:107;;21751:8;-1:-1:-1;;;;;21729:30:107;:18;:16;:18::i;:::-;-1:-1:-1;;;;;21729:30:107;;21725:132;;21779:48;;;;:25;:48;;;;;;;;-1:-1:-1;;;;;21779:58:107;;;;;;;;;:63;;21841:1;;21779:48;:63;;21841:1;;21779:63;:::i;:::-;;;;-1:-1:-1;;21725:132:107;21911:31;;21877:66;;;;:33;:66;;;;;;;;21944:27;;21877:95;;;;;;;:118;;;;;;;;;;;;;;;;;;;;;;;;;;;22005:33;:63;;;22078:44;;;:15;:44;;;;;:55;;-1:-1:-1;;;;;;22078:55:107;-1:-1:-1;;;;;22078:55:107;;;;;22172:27;;22143:57;;:28;:57;;;;;22203:12;22143:72;;22257:27;;22225:60;;:31;:60;;;;;;22288:15;22225:78;;22407:28;22449:31;;22494:27;;22370:161;;19716:25:140;;;19757:18;;;19750:34;;;;22370:161:107;;19689:18:140;22370:161:107;;;;;;;19766:2772;;19647:2891;;:::o;1671:281:40:-;1748:17;-1:-1:-1;;;;;1748:29:40;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:40;;-1:-1:-1;;;;;6818:32:140;;1805:47:40;;;6800:51:140;6773:18;;1805:47:40;6654:203:140;1744:119:40;-1:-1:-1;;;;;;;;;;;1872:73:40;;-1:-1:-1;;;;;;1872:73:40;-1:-1:-1;;;;;1872:73:40;;;;;;;;;;1671:281::o;3916:253:53:-;3999:12;4024;4038:23;4065:6;-1:-1:-1;;;;;4065:19:53;4085:4;4065:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4023:67;;;;4107:55;4134:6;4142:7;4151:10;4107:26;:55::i;:::-;4100:62;3916:253;-1:-1:-1;;;;;3916:253:53:o;6113:122:40:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:40;;;;;;;;;;;4437:582:53;4581:12;4610:7;4605:408;;4633:19;4641:10;4633:7;:19::i;:::-;4605:408;;;4857:17;;:22;:49;;;;-1:-1:-1;;;;;;4883:18:53;;;:23;4857:49;4853:119;;;4933:24;;-1:-1:-1;;;4933:24:53;;-1:-1:-1;;;;;6818:32:140;;4933:24:53;;;6800:51:140;6773:18;;4933:24:53;6654:203:140;4853:119:53;-1:-1:-1;4992:10:53;4985:17;;5559:487;5690:17;;:21;5686:354;;5887:10;5881:17;5943:15;5930:10;5926:2;5922:19;5915:44;5686:354;6010:19;;-1:-1:-1;;;6010:19:53;;;;;;;;;;;14:286:140;72:6;125:2;113:9;104:7;100:23;96:32;93:52;;;141:1;138;131:12;93:52;167:23;;-1:-1:-1;;;;;;219:32:140;;209:43;;199:71;;266:1;263;256:12;497:466;574:6;582;590;643:2;631:9;622:7;618:23;614:32;611:52;;;659:1;656;649:12;611:52;-1:-1:-1;;704:23:140;;;824:2;809:18;;796:32;;-1:-1:-1;927:2:140;912:18;;;899:32;;497:466;-1:-1:-1;497:466:140:o;1543:226::-;1602:6;1655:2;1643:9;1634:7;1630:23;1626:32;1623:52;;;1671:1;1668;1661:12;1623:52;-1:-1:-1;1716:23:140;;1543:226;-1:-1:-1;1543:226:140:o;1774:127::-;1835:10;1830:3;1826:20;1823:1;1816:31;1866:4;1863:1;1856:15;1890:4;1887:1;1880:15;1906:275;1977:2;1971:9;2042:2;2023:13;;-1:-1:-1;;2019:27:140;2007:40;;-1:-1:-1;;;;;2062:34:140;;2098:22;;;2059:62;2056:88;;;2124:18;;:::i;:::-;2160:2;2153:22;1906:275;;-1:-1:-1;1906:275:140:o;2186:727::-;2253:5;2301:4;2289:9;2284:3;2280:19;2276:30;2273:50;;;2319:1;2316;2309:12;2273:50;2372:2;2366:9;2414:4;2402:17;;-1:-1:-1;;;;;2434:34:140;;2470:22;;;2431:62;2428:88;;;2496:18;;:::i;:::-;2532:2;2525:22;;;2616:23;;2648;;2744:2;2729:18;;;2716:32;2764:15;;;2757:32;2847:18;;;2834:32;2882:15;;;2875:32;;;;-1:-1:-1;2565:6:140;2186:727;-1:-1:-1;2186:727:140:o;2918:254::-;3016:6;3069:2;3057:9;3048:7;3044:23;3040:32;3037:52;;;3085:1;3082;3075:12;3037:52;3108:58;3158:7;3147:9;3108:58;:::i;3177:149::-;-1:-1:-1;;;;;3270:31:140;;3260:42;;3250:70;;3316:1;3313;3306:12;3331:183;3391:4;-1:-1:-1;;;;;3416:6:140;3413:30;3410:56;;;3446:18;;:::i;:::-;-1:-1:-1;3491:1:140;3487:14;3503:4;3483:25;;3331:183::o;3519:762::-;3573:5;3626:3;3619:4;3611:6;3607:17;3603:27;3593:55;;3644:1;3641;3634:12;3593:55;3684:6;3671:20;3711:64;3727:47;3767:6;3727:47;:::i;:::-;3711:64;:::i;:::-;3799:3;3823:6;3818:3;3811:19;3855:4;3850:3;3846:14;3839:21;;3916:4;3906:6;3903:1;3899:14;3891:6;3887:27;3883:38;3869:52;;3944:3;3936:6;3933:15;3930:35;;;3961:1;3958;3951:12;3930:35;3997:4;3989:6;3985:17;4011:239;4027:6;4022:3;4019:15;4011:239;;;4109:3;4096:17;4126:49;4169:5;4126:49;:::i;:::-;4188:18;;4235:4;4226:14;;;;4044;4011:239;;;-1:-1:-1;4268:7:140;3519:762;-1:-1:-1;;;;;3519:762:140:o;4286:1170::-;4450:6;4458;4466;4474;4482;4490;4498;4551:3;4539:9;4530:7;4526:23;4522:33;4519:53;;;4568:1;4565;4558:12;4519:53;4607:9;4594:23;4626:49;4669:5;4626:49;:::i;:::-;4694:5;-1:-1:-1;4772:2:140;4757:18;;4744:32;;-1:-1:-1;4875:2:140;4860:18;;4847:32;;-1:-1:-1;4978:2:140;4963:18;;4950:32;;-1:-1:-1;5059:3:140;5044:19;;5031:33;-1:-1:-1;;;;;5076:30:140;;5073:50;;;5119:1;5116;5109:12;5073:50;5142:61;5195:7;5186:6;5175:9;5171:22;5142:61;:::i;:::-;5132:71;-1:-1:-1;;5276:3:140;5261:19;;5248:33;;-1:-1:-1;5359:3:140;5344:19;;5331:33;5373:51;5331:33;5373:51;:::i;:::-;5443:7;5433:17;;;4286:1170;;;;;;;;;;:::o;5461:385::-;5529:6;5537;5590:2;5578:9;5569:7;5565:23;5561:32;5558:52;;;5606:1;5603;5596:12;5558:52;5651:23;;;-1:-1:-1;5750:2:140;5735:18;;5722:32;5763:51;5722:32;5763:51;:::i;:::-;5833:7;5823:17;;;5461:385;;;;;:::o;6862:346::-;6930:6;6938;6991:2;6979:9;6970:7;6966:23;6962:32;6959:52;;;7007:1;7004;6997:12;6959:52;-1:-1:-1;;7052:23:140;;;7172:2;7157:18;;;7144:32;;-1:-1:-1;6862:346:140:o;7537:265::-;7596:6;7649:2;7637:9;7628:7;7624:23;7620:32;7617:52;;;7665:1;7662;7655:12;7617:52;7704:9;7691:23;7723:49;7766:5;7723:49;:::i;7807:348::-;7891:6;7944:2;7932:9;7923:7;7919:23;7915:32;7912:52;;;7960:1;7957;7950:12;7912:52;8000:9;7987:23;-1:-1:-1;;;;;8025:6:140;8022:30;8019:50;;;8065:1;8062;8055:12;8019:50;8088:61;8141:7;8132:6;8121:9;8117:22;8088:61;:::i;8160:918::-;8237:6;8245;8298:2;8286:9;8277:7;8273:23;8269:32;8266:52;;;8314:1;8311;8304:12;8266:52;8353:9;8340:23;8372:49;8415:5;8372:49;:::i;:::-;8440:5;-1:-1:-1;8496:2:140;8481:18;;8468:32;-1:-1:-1;;;;;8512:30:140;;8509:50;;;8555:1;8552;8545:12;8509:50;8578:22;;8631:4;8623:13;;8619:27;-1:-1:-1;8609:55:140;;8660:1;8657;8650:12;8609:55;8700:2;8687:16;-1:-1:-1;;;;;8718:6:140;8715:30;8712:56;;;8748:18;;:::i;:::-;8790:57;8837:2;8814:17;;-1:-1:-1;;8810:31:140;8843:2;8806:40;8790:57;:::i;:::-;8870:6;8863:5;8856:21;8918:7;8913:2;8904:6;8900:2;8896:15;8892:24;8889:37;8886:57;;;8939:1;8936;8929:12;8886:57;8994:6;8989:2;8985;8981:11;8976:2;8969:5;8965:14;8952:49;9046:1;9041:2;9032:6;9025:5;9021:18;9017:27;9010:38;9067:5;9057:15;;;;;8160:918;;;;;:::o;9083:965::-;9206:6;9259:2;9247:9;9238:7;9234:23;9230:32;9227:52;;;9275:1;9272;9265:12;9227:52;9315:9;9302:23;-1:-1:-1;;;;;9340:6:140;9337:30;9334:50;;;9380:1;9377;9370:12;9334:50;9403:22;;9456:4;9448:13;;9444:27;-1:-1:-1;9434:55:140;;9485:1;9482;9475:12;9434:55;9525:2;9512:16;9548:64;9564:47;9604:6;9564:47;:::i;9548:64::-;9634:3;9658:6;9653:3;9646:19;9690:2;9685:3;9681:12;9674:19;;9748:2;9740:4;9732:6;9728:17;9724:2;9720:26;9716:35;9702:49;;9774:7;9766:6;9763:19;9760:39;;;9795:1;9792;9785:12;9760:39;9827:2;9823;9819:11;9808:22;;9839:179;9855:6;9850:3;9847:15;9839:179;;;9923:52;9967:7;9962:3;9923:52;:::i;:::-;9918:3;9911:65;10005:2;10000:3;9996:12;9989:19;;9881:4;9876:3;9872:14;9865:21;;9839:179;;;10037:5;9083:965;-1:-1:-1;;;;;;9083:965:140:o;10053:544::-;10130:6;10138;10146;10199:2;10187:9;10178:7;10174:23;10170:32;10167:52;;;10215:1;10212;10205:12;10167:52;10260:23;;;-1:-1:-1;10359:2:140;10344:18;;10331:32;10372:51;10331:32;10372:51;:::i;:::-;10442:7;-1:-1:-1;10501:2:140;10486:18;;10473:32;10514:51;10473:32;10514:51;:::i;:::-;10584:7;10574:17;;;10053:544;;;;;:::o;10602:446::-;10655:3;10693:5;10687:12;10720:6;10715:3;10708:19;10752:4;10747:3;10743:14;10736:21;;10791:4;10784:5;10780:16;10814:1;10824:199;10838:6;10835:1;10832:13;10824:199;;;10903:13;;-1:-1:-1;;;;;10899:39:140;10887:52;;10968:4;10959:14;;;;10996:17;;;;10935:1;10853:9;10824:199;;;-1:-1:-1;11039:3:140;;10602:446;-1:-1:-1;;;;10602:446:140:o;11053:261::-;11232:2;11221:9;11214:21;11195:4;11252:56;11304:2;11293:9;11289:18;11281:6;11252:56;:::i;11319:250::-;11404:1;11414:113;11428:6;11425:1;11422:13;11414:113;;;11504:11;;;11498:18;11485:11;;;11478:39;11450:2;11443:10;11414:113;;;-1:-1:-1;;11561:1:140;11543:16;;11536:27;11319:250::o;11574:396::-;11723:2;11712:9;11705:21;11686:4;11755:6;11749:13;11798:6;11793:2;11782:9;11778:18;11771:34;11814:79;11886:6;11881:2;11870:9;11866:18;11861:2;11853:6;11849:15;11814:79;:::i;:::-;11954:2;11933:15;-1:-1:-1;;11929:29:140;11914:45;;;;11961:2;11910:54;;11574:396;-1:-1:-1;;11574:396:140:o;11975:424::-;12043:6;12051;12104:2;12092:9;12083:7;12079:23;12075:32;12072:52;;;12120:1;12117;12110:12;12072:52;12159:9;12146:23;12178:49;12221:5;12178:49;:::i;:::-;12246:5;-1:-1:-1;12303:2:140;12288:18;;12275:32;12316:51;12275:32;12316:51;:::i;12755:273::-;12811:6;12864:2;12852:9;12843:7;12839:23;12835:32;12832:52;;;12880:1;12877;12870:12;12832:52;12919:9;12906:23;12972:5;12965:13;12958:21;12951:5;12948:32;12938:60;;12994:1;12991;12984:12;13684:127;13745:10;13740:3;13736:20;13733:1;13726:31;13776:4;13773:1;13766:15;13800:4;13797:1;13790:15;13816:125;13881:9;;;13902:10;;;13899:36;;;13915:18;;:::i;13946:398::-;14148:2;14130:21;;;14187:2;14167:18;;;14160:30;14226:34;14221:2;14206:18;;14199:62;-1:-1:-1;;;14292:2:140;14277:18;;14270:32;14334:3;14319:19;;13946:398::o;14349:332::-;14556:6;14545:9;14538:25;14599:2;14594;14583:9;14579:18;14572:30;14519:4;14619:56;14671:2;14660:9;14656:18;14648:6;14619:56;:::i;14686:127::-;14747:10;14742:3;14738:20;14735:1;14728:31;14778:4;14775:1;14768:15;14802:4;14799:1;14792:15;14818:120;14858:1;14884;14874:35;;14889:18;;:::i;:::-;-1:-1:-1;14923:9:140;;14818:120::o;15533:184::-;15603:6;15656:2;15644:9;15635:7;15631:23;15627:32;15624:52;;;15672:1;15669;15662:12;15624:52;-1:-1:-1;15695:16:140;;15533:184;-1:-1:-1;15533:184:140:o;15722:128::-;15789:9;;;15810:11;;;15807:37;;;15824:18;;:::i;16332:969::-;16427:6;16480:2;16468:9;16459:7;16455:23;16451:32;16448:52;;;16496:1;16493;16486:12;16448:52;16529:9;16523:16;-1:-1:-1;;;;;16554:6:140;16551:30;16548:50;;;16594:1;16591;16584:12;16548:50;16617:22;;16670:4;16662:13;;16658:27;-1:-1:-1;16648:55:140;;16699:1;16696;16689:12;16648:55;16732:2;16726:9;16755:64;16771:47;16811:6;16771:47;:::i;16755:64::-;16841:3;16865:6;16860:3;16853:19;16897:2;16892:3;16888:12;16881:19;;16952:2;16942:6;16939:1;16935:14;16931:2;16927:23;16923:32;16909:46;;16978:7;16970:6;16967:19;16964:39;;;16999:1;16996;16989:12;16964:39;17031:2;17027;17023:11;17012:22;;17043:228;17059:6;17054:3;17051:15;17043:228;;;17132:3;17126:10;17149:49;17192:5;17149:49;:::i;:::-;17211:18;;17258:2;17076:12;;;;17249;;;;17043:228;;17558:112;17590:1;17616;17606:35;;17621:18;;:::i;:::-;-1:-1:-1;17655:9:140;;17558:112::o;17675:127::-;17736:10;17731:3;17727:20;17724:1;17717:31;17767:4;17764:1;17757:15;17791:4;17788:1;17781:15;17807:168;17880:9;;;17911;;17928:15;;;17922:22;;17908:37;17898:71;;17949:18;;:::i;17980:398::-;18182:2;18164:21;;;18221:2;18201:18;;;18194:30;18260:34;18255:2;18240:18;;18233:62;-1:-1:-1;;;18326:2:140;18311:18;;18304:32;18368:3;18353:19;;17980:398::o;20263:135::-;20302:3;20323:17;;;20320:43;;20343:18;;:::i;:::-;-1:-1:-1;20390:1:140;20379:13;;20263:135::o;20403:287::-;20532:3;20570:6;20564:13;20586:66;20645:6;20640:3;20633:4;20625:6;20621:17;20586:66;:::i;:::-;20668:16;;;;;20403:287;-1:-1:-1;;20403:287:140:o","linkReferences":{},"immutableReferences":{"39722":[{"start":9958,"length":32},{"start":9999,"length":32},{"start":10323,"length":32}]}},"methodIdentifiers":{"COMMITMENT_ADMIN()":"80e460f0","DEFAULT_ADMIN_ROLE()":"a217fddf","TRUSTED_ATTESTER()":"5db916ab","UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","acceptGenesisCeremony()":"92a2ebf3","attesterRewardPoints(uint256,address)":"6f865294","batchGrantCommitmentAdmin(address[])":"4b47d955","batchGrantTrustedAttester(address[])":"cf6772ad","commitmentFirstSeenAt(uint256,bytes32)":"d7830688","commitmentStake(uint256,bytes32)":"c19b406c","commitments(uint256,address)":"e90d4c06","createSuperBlockCommitment(uint256,bytes32,bytes32)":"026583d7","forceLatestCommitment((uint256,bytes32,bytes32))":"08c7050f","getAcceptingEpoch()":"6c713af8","getAttesterRewardPoints(uint256,address)":"6978ab12","getAttesterStake(uint256,address)":"ba26513e","getAttesterStakeForAcceptingEpoch(address)":"491d0467","getCommitmentByAttester(uint256,address)":"f1949add","getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":"e07472ef","getCustodianStake(uint256,address)":"1de38fe1","getCustodianStakeForAcceptingEpoch(address)":"d440116d","getEpochDuration()":"5d3ea8f1","getEpochStartTime()":"90879f64","getLastPostconfirmedSuperBlockHeight()":"59b99597","getMaxTolerableSuperBlockHeight()":"943b79e2","getMinCommitmentAgeForPostconfirmation()":"ab208ebd","getNextAcceptingEpochWithException()":"3752d675","getPostconfirmedCommitment(uint256)":"2bfd11d6","getPostconfirmer()":"35ea1c63","getPostconfirmerDuration()":"1241ebe3","getPostconfirmerPrivilegeDuration()":"028e490a","getPostconfirmerRewardPoints(uint256,address)":"ed8a1d59","getPostconfirmerStartTime()":"5f4d642e","getPresentEpoch()":"37d7f58f","getRoleAdmin(bytes32)":"248a9ca3","getStake(uint256,address,address)":"7aa81c2a","getStakeForAcceptingEpoch(address,address)":"bb04bd2f","getStakedAttestersForAcceptingEpoch()":"aa0d6fcd","getSuperBlockHeightAssignedEpoch(uint256)":"d283392e","getTotalStake(uint256)":"45367f23","getTotalStakeForAcceptingEpoch()":"14e38026","getValidatorCommitmentAtSuperBlockHeight(uint256,address)":"556d97c8","grantCommitmentAdmin(address)":"949d7c2a","grantRole(bytes32,address)":"2f2ff15d","grantTrustedAttester(address)":"81df1746","hasRole(bytes32,address)":"91d14854","initialize()":"8129fc1c","initialize(address,uint256,uint256,uint256,address[],uint256,address)":"107e21ca","isCommitted(uint256)":"e4a3fb74","isPostconfirmed(uint256)":"ec23ec2e","isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":"0cf6b6bd","lastPostconfirmedSuperBlockHeight()":"fdafe9ca","leadingSuperBlockTolerance()":"03d3f7fd","minCommitmentAgeForPostconfirmation()":"bff92c8c","moveTokenAddress()":"58376877","openAttestationEnabled()":"ef9ae15c","postconfirmSuperBlocksAndRollover()":"26624e37","postconfirmedAtL1BlockHeight(uint256)":"7ac561c8","postconfirmedAtL1BlockHeightByPostconfirmer(uint256)":"7cfd8205","postconfirmedAtL1BlockTimestamp(uint256)":"a207fe2f","postconfirmedBy(uint256)":"91807e4f","postconfirmedByPostconfirmer(uint256)":"08750a32","postconfirmedSuperBlocks(uint256)":"eda67fc4","postconfirmedSuperBlocksVersion()":"ec18c186","postconfirmerDuration()":"4ceb2e66","postconfirmerPrivilegeDuration()":"55b8119d","postconfirmerRewardPoints(uint256,address)":"1db859c7","proxiableUUID()":"52d1902d","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","rewardPerAttestationPoint()":"5f83c7d5","rewardPerPostconfirmationPoint()":"d3eef4cc","setAcceptingEpoch(uint256)":"d03509ec","setMinCommitmentAgeForPostconfirmation(uint256)":"1f83e2a3","setOpenAttestationEnabled(bool)":"d2526fef","setPostconfirmedCommitmentAtBlockHeight((uint256,bytes32,bytes32))":"3119edd4","setPostconfirmerDuration(uint256)":"3d645927","setPostconfirmerPrivilegeDuration(uint256)":"da7d28b6","setRewardPerAttestationPoint(uint256)":"0d39f7f0","setRewardPerPostconfirmationPoint(uint256)":"57342282","stakingContract()":"ee99205c","submitBatchSuperBlockCommitment((uint256,bytes32,bytes32)[])":"622e3616","submitSuperBlockCommitment((uint256,bytes32,bytes32))":"0e74b609","superBlockHeightAssignedEpoch(uint256)":"85e6b8c2","supportsInterface(bytes4)":"01ffc9a7","upgradeToAndCall(address,bytes)":"4f1ef286","versionedPostconfirmedSuperBlocks(uint256,uint256)":"3ba18005"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"AccessControlBadConfirmation\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"neededRole\",\"type\":\"bytes32\"}],\"name\":\"AccessControlUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AttesterAlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"PostconfirmerDurationTooLongForEpoch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnacceptableSuperBlockCommitment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmationTooLong\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDurationTooLong\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"previousAdminRole\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"newAdminRole\",\"type\":\"bytes32\"}],\"name\":\"RoleAdminChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"attesterStake\",\"type\":\"uint256\"}],\"name\":\"SuperBlockCommitmentSubmitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"blockHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"stateCommitment\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"SuperBlockPostconfirmed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMITMENT_ADMIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TRUSTED_ATTESTER\",\"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\":[],\"name\":\"acceptGenesisCeremony\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"attesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"batchGrantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"attesters\",\"type\":\"address[]\"}],\"name\":\"batchGrantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"}],\"name\":\"commitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitement\",\"type\":\"bytes32\"}],\"name\":\"commitmentStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"stake\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"name\":\"createSuperBlockCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"forceLatestCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getAttesterStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getCommitmentByAttester\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"getCommitmentFirstSeenAt\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"}],\"name\":\"getCustodianStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getEpochStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMaxTolerableSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getMinCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getNextAcceptingEpochWithException\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getPostconfirmedCommitment\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"getPostconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPostconfirmerStartTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPresentEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"custodian\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStakedAttestersForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"getSuperBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"name\":\"getTotalStake\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getTotalStakeForAcceptingEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"getValidatorCommitmentAtSuperBlockHeight\",\"outputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantCommitmentAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"name\":\"grantTrustedAttester\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"_stakingContract\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_lastPostconfirmedSuperBlockHeight\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_leadingSuperBlockTolerance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_epochDuration\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_custodians\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_moveTokenAddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isCommitted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"}],\"name\":\"isPostconfirmed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"isWithinPostconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"lastPostconfirmedSuperBlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"leadingSuperBlockTolerance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minCommitmentAgeForPostconfirmation\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"moveTokenAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openAttestationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmSuperBlocksAndRollover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeight\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockHeightByPostconfirmer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockHeight\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedAtL1BlockTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"L1BlockTimestamp\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedBy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"attester\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedByPostconfirmer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"postconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmedSuperBlocksVersion\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"postconfirmerPrivilegeDuration\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"postconfirmer\",\"type\":\"address\"}],\"name\":\"postconfirmerRewardPoints\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"points\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"callerConfirmation\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerAttestationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerPostconfirmationPoint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newEpoch\",\"type\":\"uint256\"}],\"name\":\"setAcceptingEpoch\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_minCommitmentAgeForPostconfirmation\",\"type\":\"uint256\"}],\"name\":\"setMinCommitmentAgeForPostconfirmation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"enabled\",\"type\":\"bool\"}],\"name\":\"setOpenAttestationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"setPostconfirmedCommitmentAtBlockHeight\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_postconfirmerPrivilegeDuration\",\"type\":\"uint256\"}],\"name\":\"setPostconfirmerPrivilegeDuration\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerAttestationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"rewardPerPoint\",\"type\":\"uint256\"}],\"name\":\"setRewardPerPostconfirmationPoint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stakingContract\",\"outputs\":[{\"internalType\":\"contract IMovementStaking\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment[]\",\"name\":\"superBlockCommitments\",\"type\":\"tuple[]\"}],\"name\":\"submitBatchSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"internalType\":\"struct PCPStorage.SuperBlockCommitment\",\"name\":\"superBlockCommitment\",\"type\":\"tuple\"}],\"name\":\"submitSuperBlockCommitment\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"superBlockHeightAssignedEpoch\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"epoch\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"superBlockHeight\",\"type\":\"uint256\"}],\"name\":\"versionedPostconfirmedSuperBlocks\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"height\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commitment\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"blockId\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}],\"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.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted signaling this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"getPostconfirmerPrivilegeDuration()\":{\"returns\":{\"_0\":\"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"initialize()\":{\"details\":\"Initialize the contract\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"details\":\"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation\"},\"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.\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"setAcceptingEpoch(uint256)\":{\"params\":{\"newEpoch\":\"The new accepting epoch value\"}},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"params\":{\"_minCommitmentAgeForPostconfirmation\":\"New minimum commitment age \"}},\"setPostconfirmerDuration(uint256)\":{\"params\":{\"_postconfirmerDuration\":\"New postconfirmer term duration in time units\"}},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"params\":{\"_postconfirmerPrivilegeDuration\":\"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment\"}},\"supportsInterface(bytes4)\":{\"details\":\"See {IERC165-supportsInterface}.\"},\"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\":{\"PostconfirmerDurationTooLong()\":[{\"notice\":\"Error thrown when postconfirmer term is greater than 256 blocks\"}],\"PostconfirmerDurationTooLongForEpoch()\":[{\"notice\":\"Error thrown when postconfirmer term is too large for epoch duration\"}],\"minCommitmentAgeForPostconfirmationTooLong()\":[{\"notice\":\"Error thrown when minimum commitment age is greater than epoch duration\"}],\"postconfirmerPrivilegeDurationTooLong()\":[{\"notice\":\"Error thrown when maximum postconfirmer non-reactivity time is greater than epoch duration\"}]},\"kind\":\"user\",\"methods\":{\"COMMITMENT_ADMIN()\":{\"notice\":\"The role that allows the commitment admin to set the accepting epoch\"},\"TRUSTED_ATTESTER()\":{\"notice\":\"The role that allows attesters to submit commitments\"},\"acceptGenesisCeremony()\":{\"notice\":\"Accepts the genesis ceremony.\"},\"getAcceptingEpoch()\":{\"notice\":\"get the accepting epoch\"},\"getAttesterRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for an attester in a given epoch\"},\"getAttesterStake(uint256,address)\":{\"notice\":\"Gets the stake for a given attester at a given epoch\"},\"getAttesterStakeForAcceptingEpoch(address)\":{\"notice\":\"Gets the stake for a given attester at the accepting epoch\"},\"getCommitmentByAttester(uint256,address)\":{\"notice\":\"Gets the commitment submitted by an attester for a given height\"},\"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))\":{\"notice\":\"get the timestamp when a commitment was first seen\"},\"getCustodianStake(uint256,address)\":{\"notice\":\"Gets the stake for a given custodian for a given epoch\"},\"getEpochDuration()\":{\"notice\":\"Gets the epoch duration\"},\"getEpochStartTime()\":{\"notice\":\"Gets the time at which the current epoch started\"},\"getLastPostconfirmedSuperBlockHeight()\":{\"notice\":\"Gets the height of the last postconfirmed superblock\"},\"getPostconfirmedCommitment(uint256)\":{\"notice\":\"get the postconfirmed commitment for a given height\"},\"getPostconfirmer()\":{\"notice\":\"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness\"},\"getPostconfirmerDuration()\":{\"notice\":\"Gets the postconfirmer duration\"},\"getPostconfirmerPrivilegeDuration()\":{\"notice\":\"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"getPostconfirmerRewardPoints(uint256,address)\":{\"notice\":\"Gets the reward points for a postconfirmer in a given epoch\"},\"getPostconfirmerStartTime()\":{\"notice\":\"Gets the time at which the current postconfirmer's term started\"},\"getPresentEpoch()\":{\"notice\":\"get the present epoch\"},\"getStake(uint256,address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at a given epoch\"},\"getStakeForAcceptingEpoch(address,address)\":{\"notice\":\"Gets the stake for a given tuple (custodian, attester) at the accepting epoch\"},\"getStakedAttestersForAcceptingEpoch()\":{\"notice\":\"Gets the attesters who have stake in the current accepting epoch\"},\"getSuperBlockHeightAssignedEpoch(uint256)\":{\"notice\":\"Gets the epoch assigned to a superblock height\"},\"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))\":{\"notice\":\"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window\"},\"minCommitmentAgeForPostconfirmation()\":{\"notice\":\"Minimum time that must pass before a commitment can be postconfirmed\"},\"postconfirmSuperBlocksAndRollover()\":{\"notice\":\"postconfirm superblocks and rollover\"},\"postconfirmerDuration()\":{\"notice\":\"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period.\"},\"postconfirmerPrivilegeDuration()\":{\"notice\":\"Max time the postconfirmer can be non-reactive to an honest superBlock commitment\"},\"setAcceptingEpoch(uint256)\":{\"notice\":\"Sets the accepting epoch to a new value (must be higher than current)\"},\"setMinCommitmentAgeForPostconfirmation(uint256)\":{\"notice\":\"Sets the minimum time that must pass before a commitment can be postconfirmed\"},\"setPostconfirmerDuration(uint256)\":{\"notice\":\"Sets the postconfirmer term duration, must be less than epoch duration\"},\"setPostconfirmerPrivilegeDuration(uint256)\":{\"notice\":\"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/settlement/PCP.sol\":\"PCP\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@createx/=lib/createx/src/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@safe-smart-account/=lib/safe-smart-account/\",\":ds-test/=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/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":murky/=lib/murky/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/\",\":safe-smart-account/=lib/safe-smart-account/\",\":solady/=lib/createx/lib/solady/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45\",\"dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c\",\"dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol\":{\"keccak256\":\"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86\",\"dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH\"]},\"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/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89\",\"dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr\"]},\"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1\",\"dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol\":{\"keccak256\":\"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b\",\"dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba\",\"dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70\",\"dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2\"]},\"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329\",\"dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e\",\"dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR\"]},\"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/ReentrancyGuard.sol\":{\"keccak256\":\"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a\",\"dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d\",\"dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol\":{\"keccak256\":\"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f\",\"dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz\"]},\"src/settlement/PCP.sol\":{\"keccak256\":\"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b\",\"dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp\"]},\"src/settlement/PCPStorage.sol\":{\"keccak256\":\"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff\",\"dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss\"]},\"src/settlement/interfaces/IPCP.sol\":{\"keccak256\":\"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f\",\"dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg\"]},\"src/settlement/settlement/BaseSettlement.sol\":{\"keccak256\":\"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e\",\"dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED\"]},\"src/staking/MovementStaking.sol\":{\"keccak256\":\"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670\",\"dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9\"]},\"src/staking/MovementStakingStorage.sol\":{\"keccak256\":\"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225\",\"license\":\"UNLICENSED\",\"urls\":[\"bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb\",\"dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP\"]},\"src/staking/base/BaseStaking.sol\":{\"keccak256\":\"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46\",\"dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx\"]},\"src/staking/interfaces/IMovementStaking.sol\":{\"keccak256\":\"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933\",\"urls\":[\"bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe\",\"dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj\"]},\"src/token/base/BaseToken.sol\":{\"keccak256\":\"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e\",\"dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd\"]},\"src/token/base/MintableToken.sol\":{\"keccak256\":\"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a\",\"dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o\"]},\"src/token/base/WrappedToken.sol\":{\"keccak256\":\"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885\",\"dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4\"]},\"src/token/base/WrappedTokenStorage.sol\":{\"keccak256\":\"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08\",\"dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj\"]},\"src/token/custodian/CustodianToken.sol\":{\"keccak256\":\"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04\",\"dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[],"type":"error","name":"AttesterAlreadyCommitted"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLong"},{"inputs":[],"type":"error","name":"PostconfirmerDurationTooLongForEpoch"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[],"type":"error","name":"UnacceptableSuperBlockCommitment"},{"inputs":[],"type":"error","name":"minCommitmentAgeForPostconfirmationTooLong"},{"inputs":[],"type":"error","name":"postconfirmerPrivilegeDurationTooLong"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"attesterStake","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockCommitmentSubmitted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"blockHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"stateCommitment","type":"bytes32","indexed":false},{"internalType":"uint256","name":"height","type":"uint256","indexed":false}],"type":"event","name":"SuperBlockPostconfirmed","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMITMENT_ADMIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"TRUSTED_ATTESTER","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"acceptGenesisCeremony"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"attesterRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantCommitmentAdmin"},{"inputs":[{"internalType":"address[]","name":"attesters","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"batchGrantTrustedAttester"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"timestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"bytes32","name":"commitement","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitmentStake","outputs":[{"internalType":"uint256","name":"stake","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"commitments","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}],"stateMutability":"pure","type":"function","name":"createSuperBlockCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"forceLatestCommitment"},{"inputs":[],"stateMutability":"view","type":"function","name":"getAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getAttesterStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getCommitmentByAttester","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"getCommitmentFirstSeenAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"}],"stateMutability":"view","type":"function","name":"getCustodianStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getEpochStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMaxTolerableSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getMinCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getNextAcceptingEpochWithException","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getPostconfirmedCommitment","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmer","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"getPostconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPostconfirmerStartTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getPresentEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"custodian","type":"address"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getStakedAttestersForAcceptingEpoch","outputs":[{"internalType":"address[]","name":"","type":"address[]"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSuperBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTotalStake","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getTotalStakeForAcceptingEpoch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"view","type":"function","name":"getValidatorCommitmentAtSuperBlockHeight","outputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantCommitmentAdmin"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"address","name":"attester","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantTrustedAttester"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract IMovementStaking","name":"_stakingContract","type":"address"},{"internalType":"uint256","name":"_lastPostconfirmedSuperBlockHeight","type":"uint256"},{"internalType":"uint256","name":"_leadingSuperBlockTolerance","type":"uint256"},{"internalType":"uint256","name":"_epochDuration","type":"uint256"},{"internalType":"address[]","name":"_custodians","type":"address[]"},{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"},{"internalType":"address","name":"_moveTokenAddress","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isCommitted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"height","type":"uint256"}],"stateMutability":"view","type":"function","name":"isPostconfirmed","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"view","type":"function","name":"isWithinPostconfirmerPrivilegeDuration","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"lastPostconfirmedSuperBlockHeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"leadingSuperBlockTolerance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minCommitmentAgeForPostconfirmation","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"moveTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"openAttestationEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"postconfirmSuperBlocksAndRollover"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeight","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockHeightByPostconfirmer","outputs":[{"internalType":"uint256","name":"L1BlockHeight","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedAtL1BlockTimestamp","outputs":[{"internalType":"uint256","name":"L1BlockTimestamp","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedBy","outputs":[{"internalType":"address","name":"attester","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedByPostconfirmer","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmedSuperBlocksVersion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"postconfirmerPrivilegeDuration","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"address","name":"postconfirmer","type":"address"}],"stateMutability":"view","type":"function","name":"postconfirmerRewardPoints","outputs":[{"internalType":"uint256","name":"points","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerAttestationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerPostconfirmationPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"newEpoch","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setAcceptingEpoch"},{"inputs":[{"internalType":"uint256","name":"_minCommitmentAgeForPostconfirmation","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMinCommitmentAgeForPostconfirmation"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setOpenAttestationEnabled"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmedCommitmentAtBlockHeight"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerDuration"},{"inputs":[{"internalType":"uint256","name":"_postconfirmerPrivilegeDuration","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setPostconfirmerPrivilegeDuration"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerAttestationPoint"},{"inputs":[{"internalType":"uint256","name":"rewardPerPoint","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setRewardPerPostconfirmationPoint"},{"inputs":[],"stateMutability":"view","type":"function","name":"stakingContract","outputs":[{"internalType":"contract IMovementStaking","name":"","type":"address"}]},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment[]","name":"superBlockCommitments","type":"tuple[]","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitBatchSuperBlockCommitment"},{"inputs":[{"internalType":"struct PCPStorage.SuperBlockCommitment","name":"superBlockCommitment","type":"tuple","components":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"stateMutability":"nonpayable","type":"function","name":"submitSuperBlockCommitment"},{"inputs":[{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"superBlockHeightAssignedEpoch","outputs":[{"internalType":"uint256","name":"epoch","type":"uint256"}]},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"superBlockHeight","type":"uint256"}],"stateMutability":"view","type":"function","name":"versionedPostconfirmedSuperBlocks","outputs":[{"internalType":"uint256","name":"height","type":"uint256"},{"internalType":"bytes32","name":"commitment","type":"bytes32"},{"internalType":"bytes32","name":"blockId","type":"bytes32"}]}],"devdoc":{"kind":"dev","methods":{"getPostconfirmerPrivilegeDuration()":{"returns":{"_0":"The maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"initialize()":{"details":"Initialize the contract"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"details":"The postconfirmer's privilege window is the time period when only the postconfirmer will get rewarded for postconfirmation"},"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."},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"setAcceptingEpoch(uint256)":{"params":{"newEpoch":"The new accepting epoch value"}},"setMinCommitmentAgeForPostconfirmation(uint256)":{"params":{"_minCommitmentAgeForPostconfirmation":"New minimum commitment age "}},"setPostconfirmerDuration(uint256)":{"params":{"_postconfirmerDuration":"New postconfirmer term duration in time units"}},"setPostconfirmerPrivilegeDuration(uint256)":{"params":{"_postconfirmerPrivilegeDuration":"maximum time the postconfirmer is permitted to be non-reactive to an honest superBlock commitment"}},"supportsInterface(bytes4)":{"details":"See {IERC165-supportsInterface}."},"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":{"COMMITMENT_ADMIN()":{"notice":"The role that allows the commitment admin to set the accepting epoch"},"TRUSTED_ATTESTER()":{"notice":"The role that allows attesters to submit commitments"},"acceptGenesisCeremony()":{"notice":"Accepts the genesis ceremony."},"getAcceptingEpoch()":{"notice":"get the accepting epoch"},"getAttesterRewardPoints(uint256,address)":{"notice":"Gets the reward points for an attester in a given epoch"},"getAttesterStake(uint256,address)":{"notice":"Gets the stake for a given attester at a given epoch"},"getAttesterStakeForAcceptingEpoch(address)":{"notice":"Gets the stake for a given attester at the accepting epoch"},"getCommitmentByAttester(uint256,address)":{"notice":"Gets the commitment submitted by an attester for a given height"},"getCommitmentFirstSeenAt((uint256,bytes32,bytes32))":{"notice":"get the timestamp when a commitment was first seen"},"getCustodianStake(uint256,address)":{"notice":"Gets the stake for a given custodian for a given epoch"},"getEpochDuration()":{"notice":"Gets the epoch duration"},"getEpochStartTime()":{"notice":"Gets the time at which the current epoch started"},"getLastPostconfirmedSuperBlockHeight()":{"notice":"Gets the height of the last postconfirmed superblock"},"getPostconfirmedCommitment(uint256)":{"notice":"get the postconfirmed commitment for a given height"},"getPostconfirmer()":{"notice":"Determines the postconfirmer in the accepting epoch using L1 block hash as a source of randomness"},"getPostconfirmerDuration()":{"notice":"Gets the postconfirmer duration"},"getPostconfirmerPrivilegeDuration()":{"notice":"Gets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"},"getPostconfirmerRewardPoints(uint256,address)":{"notice":"Gets the reward points for a postconfirmer in a given epoch"},"getPostconfirmerStartTime()":{"notice":"Gets the time at which the current postconfirmer's term started"},"getPresentEpoch()":{"notice":"get the present epoch"},"getStake(uint256,address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at a given epoch"},"getStakeForAcceptingEpoch(address,address)":{"notice":"Gets the stake for a given tuple (custodian, attester) at the accepting epoch"},"getStakedAttestersForAcceptingEpoch()":{"notice":"Gets the attesters who have stake in the current accepting epoch"},"getSuperBlockHeightAssignedEpoch(uint256)":{"notice":"Gets the epoch assigned to a superblock height"},"isWithinPostconfirmerPrivilegeDuration((uint256,bytes32,bytes32))":{"notice":"Checks, for a given superBlock commitment, if the current L1 block time is within the postconfirmer's privilege window"},"minCommitmentAgeForPostconfirmation()":{"notice":"Minimum time that must pass before a commitment can be postconfirmed"},"postconfirmSuperBlocksAndRollover()":{"notice":"postconfirm superblocks and rollover"},"postconfirmerDuration()":{"notice":"Postconfirmer term time in seconds. The postconfirmer remains the same for postconfirmerDuration period."},"postconfirmerPrivilegeDuration()":{"notice":"Max time the postconfirmer can be non-reactive to an honest superBlock commitment"},"setAcceptingEpoch(uint256)":{"notice":"Sets the accepting epoch to a new value (must be higher than current)"},"setMinCommitmentAgeForPostconfirmation(uint256)":{"notice":"Sets the minimum time that must pass before a commitment can be postconfirmed"},"setPostconfirmerDuration(uint256)":{"notice":"Sets the postconfirmer term duration, must be less than epoch duration"},"setPostconfirmerPrivilegeDuration(uint256)":{"notice":"Sets the maximum time the postconfirmer can be non-reactive to an honest superBlock commitment"}},"version":1}},"settings":{"remappings":["@createx/=lib/createx/src/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@safe-smart-account/=lib/safe-smart-account/","ds-test/=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/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","murky/=lib/murky/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/","safe-smart-account/=lib/safe-smart-account/","solady/=lib/createx/lib/solady/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/settlement/PCP.sol":"PCP"},"evmVersion":"paris","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/AccessControlUpgradeable.sol":{"keccak256":"0x6662ec4e5cefca03eeadd073e9469df8d2944bb2ee8ec8f7622c2c46aab5f225","urls":["bzz-raw://4d8544c6f8daa4d1bc215c6a72fe0acdb748664a105b0e5efc19295667521d45","dweb:/ipfs/QmdGWqdnXT8S3RgCR6aV8XHZrsybieMQLLnug1NtpSjEXN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xd861907d1168dcaec2a7846edbaed12feb8bad2d6781dba987be01374f90b495","urls":["bzz-raw://12ff809243040419e2fc2aa7ef0aaa60b3e6ebc901553ba1de970ceeef208c4c","dweb:/ipfs/QmX2dwMVNrQAahqVzEx94gqcVB6Z8ovifPYdEfHZzj7aEb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/token/ERC20/ERC20Upgradeable.sol":{"keccak256":"0x5c54228bbb2f1f8616179c51bdb90b7960f4a3414c390ad5c6ead6763eb55a59","urls":["bzz-raw://745fe72596bb8fde5f294d9d6b943db942202e4445536ee00da3ba011f876e86","dweb:/ipfs/QmcjeESkk4rbhUVaSBfyq5f8rY56Jms1TwcJXaRD55K3UH"],"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/introspection/ERC165Upgradeable.sol":{"keccak256":"0xc8ed8d2056934b7675b695dec032f2920c2f5c6cf33a17ca85650940675323ab","urls":["bzz-raw://3c8ccc75d1cd792d192aa09e54dd49ea35fe85baa9fcd17486f29227d9f29b89","dweb:/ipfs/QmbboSbFUEiM9tdEgBwuTRb7bykFoJXZ7dsSr1PSREJXMr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/access/IAccessControl.sol":{"keccak256":"0xc1c2a7f1563b77050dc6d507db9f4ada5d042c1f6a9ddbffdc49c77cdc0a1606","urls":["bzz-raw://fd54abb96a6156d9a761f6fdad1d3004bc48d2d4fce47f40a3f91a7ae83fc3a1","dweb:/ipfs/QmUrFSGkTDJ7WaZ6qPVVe3Gn5uN2viPb7x7QQ35UX4DofX"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol":{"keccak256":"0x9b6b3e7803bc5f2f8cd7ad57db8ac1def61a9930a5a3107df4882e028a9605d7","urls":["bzz-raw://da62d6be1f5c6edf577f0cb45666a8aa9c2086a4bac87d95d65f02e2f4c36a4b","dweb:/ipfs/QmNkpvBpoCMvX8JwAFNSc5XxJ2q5BXJpL5L1txb4QkqVFF"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol":{"keccak256":"0xce41876e78d1badc0512229b4d14e4daf83bc1003d7f83978d18e0e56f965b9c","urls":["bzz-raw://a2608291cb038b388d80b79a06b6118a42f7894ff67b7da10ec0dbbf5b2973ba","dweb:/ipfs/QmWohqcBLbcxmA4eGPhZDXe5RYMMEEpFq22nfkaUMvTfw1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x8decfa54cec979c824b044b8128cd91d713f72c71fd7dfa54974624d8c949898","urls":["bzz-raw://271f914261a19d87117a777e0924ada545c16191ef9b00cc40b0134fc14ebc70","dweb:/ipfs/QmdvVNWHGHQrGGPonZJs5NuzTevTjZRM2zayKrDJf7WBA2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x4ea01544758fd2c7045961904686bfe232d2220a04ecaa2d6b08dac17827febf","urls":["bzz-raw://fabe6bef5167ae741dd8c22d7f81d3f9120bd61b290762a2e8f176712567d329","dweb:/ipfs/QmSnEitJ6xmf1SSAUeZozD7Gx7h8bNnX3a1ZBzqeivsvVg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xaaa1d17c1129b127a4a401db2fbd72960e2671474be3d08cae71ccdc42f7624c","urls":["bzz-raw://cb2f27cd3952aa667e198fba0d9b7bcec52fbb12c16f013c25fe6fb52b29cc0e","dweb:/ipfs/QmeuohBFoeyDPZA9JNCTEDz3VBfBD4EABWuWXVhHAuEpKR"],"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/ReentrancyGuard.sol":{"keccak256":"0x11a5a79827df29e915a12740caf62fe21ebe27c08c9ae3e09abe9ee3ba3866d3","urls":["bzz-raw://3cf0c69ab827e3251db9ee6a50647d62c90ba580a4d7bbff21f2bea39e7b2f4a","dweb:/ipfs/QmZiKwtKU1SBX4RGfQtY7PZfiapbbu6SZ9vizGQD9UHjRA"],"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/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0xa00be322d7db5786750ce0ac7e2f5b633ac30a5ed5fa1ced1e74acfc19acecea","urls":["bzz-raw://6c84e822f87cbdc4082533b626667b6928715bb2b1e8e7eb96954cebb9e38c8d","dweb:/ipfs/QmZmy9dgxLTerBAQDuuHqbL6EpgRxddqgv5KmwpXYVbKz1"],"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/structs/EnumerableSet.sol":{"keccak256":"0x9b161e97b8967d4bc0c08d25741889a30692cdda4b71910bf1b0e315f1962212","urls":["bzz-raw://821500c39d095eaa25b06f46e65f1d0e97c4c96b39227f79077dee7d9e84051f","dweb:/ipfs/QmSTeGorKzSWF6HAmxo32uCZiEuKNvreQdUiX1AaYtUMTz"],"license":"MIT"},"src/settlement/PCP.sol":{"keccak256":"0x719d69e9703c10631e01c0b6b56f2adb289153a5e162c7f5f2b2ec99170d6714","urls":["bzz-raw://718c29e2962e0f79249a317767c960c9746c65eefe74bd27cb89454b4935030b","dweb:/ipfs/QmdtbUuZyPsvLYGD9jQbkwN8q63NXLnjM2ZWrwzaGqaUbp"],"license":"UNLICENSED"},"src/settlement/PCPStorage.sol":{"keccak256":"0xf8531c966b1c84b009146a45614c016a1e4fe1d27d03d77ed97f5a6e728eb2a1","urls":["bzz-raw://e6e97f51c06ee9d80c212c6f8c1b814ceec46df5836341249e4b6d31137f3cff","dweb:/ipfs/QmVzSLbaveGiCFBLWWiPpR7Ta5xuF9rWhffDeTntwAfiss"],"license":"UNLICENSED"},"src/settlement/interfaces/IPCP.sol":{"keccak256":"0xf9247e3839660b3386697a2cd3882a4557ddc551929f01d8e877de6d2e4d0e89","urls":["bzz-raw://54625a2912af7fa78ae3fb873f3a6db80fc6044d3f8994701d4845032032578f","dweb:/ipfs/QmR5m72PohfHMeFFw2ASDQQgJhkeknbo9R2aGmEQU7a8zg"],"license":"UNLICENSED"},"src/settlement/settlement/BaseSettlement.sol":{"keccak256":"0xf3f6ea0ae8db122d1c6dade60057ea8fa03b8efc8108f03e48049bb9548d2c9a","urls":["bzz-raw://e340fdd89c1872461ec0f98195ef56aaf583ebf2897890ee74c1eefad8e8c86e","dweb:/ipfs/QmWCcRibYEJZEvY1ugrw7jkumrHNxr8z3dMeP457PkbJED"],"license":"MIT"},"src/staking/MovementStaking.sol":{"keccak256":"0xb61e04fbc6fce5f3d2e64269f2adccea1f27060f714259634ec20eab1cff468f","urls":["bzz-raw://0bf80557c4c9156a247c44cc476c5747028fddd392f9d3e3c7cea1a7fac1f670","dweb:/ipfs/QmQ6A6bPUsm2b7yy5eSsJ7MXgQGAF8zWEkJf7uL7sZNXi9"],"license":"UNLICENSED"},"src/staking/MovementStakingStorage.sol":{"keccak256":"0xcb909fbdd31da45891f983aca5387eff88693b31c60d304b6ab7c1128c814225","urls":["bzz-raw://fcfd3aadf8c9e714c6e0f5b8b7f6000b54a1a0eeb219d25cb23848411ae17edb","dweb:/ipfs/QmTKyTFmGKHKWk1wKncaAvXBZH9MwJfkdhFbmTUAwTX7UP"],"license":"UNLICENSED"},"src/staking/base/BaseStaking.sol":{"keccak256":"0xcc7c1baccebcaba33330c5db4a3aa5d54b32868f164673a086177b5470e10393","urls":["bzz-raw://1c47c580b7201a4d2f35f008eb8f9c8097b7abc1c0b74839199772ded16fae46","dweb:/ipfs/QmX6sMDNE7cKmTHx5RWK5TP8HdD8s2TNq1aRNwPzRC2jkx"],"license":"MIT"},"src/staking/interfaces/IMovementStaking.sol":{"keccak256":"0x250f5a72809b363ebefe5fbcdce50b62a9ff49672a863c8273e0fbe4d59f8933","urls":["bzz-raw://5a4385f838da317ce90fb84cdd83a724d132f7e6c287191673f4e2ce1a486bbe","dweb:/ipfs/Qmbwq1kBumZDyREvc4ryHMNMQ4sgT39fNAK4bUNRoXqchj"],"license":null},"src/token/base/BaseToken.sol":{"keccak256":"0xf47bfe91857c06043635af03e8eef52d36c2ff970bcc420c8fa0572f718664d2","urls":["bzz-raw://ceb98dc7f78b559ae04b9cc7c65a426e55a64bd2db941b13d2b814719ac65d3e","dweb:/ipfs/QmY4DVSwG9rGTNLxSfQavCEV9cLpmnkpBPgubRgKBxHejd"],"license":"MIT"},"src/token/base/MintableToken.sol":{"keccak256":"0xba4c9b5e900564cb3abb081d11b95f23e5f39a5ee799cda54c9f1a49a7aa8a13","urls":["bzz-raw://94ca441f7acc6b312fc3d1d6ce4dab9971fd1cdf176ae5251fe2f28c4c52a35a","dweb:/ipfs/QmXAuDzaJqydZho7CFyKKKtyYATHedyAUHTKAS839oji3o"],"license":"MIT"},"src/token/base/WrappedToken.sol":{"keccak256":"0xe32d7f47c165b1c21da0319e7d632e9a478709f07f5cb7293f2aef0420f38b45","urls":["bzz-raw://91f4a0290180838ac34fab4ae4c789f508b354f5cb4adf1931908a31eb614885","dweb:/ipfs/QmYy9GGtLjmBx8NUqntJr2tAj7LUMFzSRDsW6EmSJAndF4"],"license":"MIT"},"src/token/base/WrappedTokenStorage.sol":{"keccak256":"0xeaa1a9441688bc87ece3e191d01b8aa13a0044d4b11a5d37a4dd5f12d7c8716e","urls":["bzz-raw://88c66bbf501b9e09bbd2a30c6aa19224b5832abda864fdf8fefdc66b6c09ae08","dweb:/ipfs/QmZN7vHW2oFKx7cjWMqBeRBdEyTfr5dScgaTwswBW1PRjj"],"license":"MIT"},"src/token/custodian/CustodianToken.sol":{"keccak256":"0xc116fca556833072dcec2ad7f88859dd82de4333f76718d4c2b4323f3229a350","urls":["bzz-raw://61f1b983460735b20d06d076609b5a01a45a937c04a0c02a84bbfb4d0b31bc04","dweb:/ipfs/QmVm5WawyxcN7Zj4nEViNtcSEgAbPCH8wdb1zgGbiZjwTv"],"license":"MIT"}},"version":1},"id":107} diff --git a/protocol/pcp/clients/eth/src/client/mod.rs b/protocol/pcp/clients/eth/src/client/mod.rs index 66fc17d4..47c70852 100644 --- a/protocol/pcp/clients/eth/src/client/mod.rs +++ b/protocol/pcp/clients/eth/src/client/mod.rs @@ -1,7 +1,8 @@ use crate::util::send_eth_transaction::send_transaction; use crate::util::send_eth_transaction::PcpEthConnectorError; use crate::util::send_eth_transaction::VerifyRule; -use alloy::providers::Provider; +use alloy::providers::{Provider, RootProvider}; +use alloy::pubsub::PubSubFrontend; use alloy_primitives::Address; use alloy_primitives::U256; use alloy_sol_types::sol; diff --git a/protocol/pcp/clients/eth/src/config/mod.rs b/protocol/pcp/clients/eth/src/config/mod.rs index 2692ffb7..7c23ce70 100644 --- a/protocol/pcp/clients/eth/src/config/mod.rs +++ b/protocol/pcp/clients/eth/src/config/mod.rs @@ -12,9 +12,11 @@ use alloy::providers::fillers::WalletFiller; use alloy::providers::{Provider, ProviderBuilder, RootProvider}; use alloy::signers::local::PrivateKeySigner; // use alloy::signers::Signer as _; +use alloy_network::Ethereum; use alloy_network::EthereumWallet; use alloy_primitives::Address; use alloy_provider::fillers::BlobGasFiller; +use alloy_transport::BoxTransport; use alloy_transport_ws::WsConnect; use anyhow::Context; use clap::Parser; diff --git a/protocol/pcp/clients/eth/src/util/send_eth_transaction.rs b/protocol/pcp/clients/eth/src/util/send_eth_transaction.rs index fa45dbb2..11891085 100644 --- a/protocol/pcp/clients/eth/src/util/send_eth_transaction.rs +++ b/protocol/pcp/clients/eth/src/util/send_eth_transaction.rs @@ -1,8 +1,9 @@ use alloy::providers::Provider; use alloy_contract::CallBuilder; use alloy_contract::CallDecoder; +use alloy_network::Ethereum; +use alloy_transport::{Transport, TransportError}; use alloy_primitives::Address; -use alloy_transport::TransportError; use pcp_protocol_client_core_util::PcpClientError; use std::marker::PhantomData; use thiserror::Error; @@ -77,44 +78,39 @@ impl VerifyRule for SendTransactionErrorRule { }; if payload.code == -32000 && payload.message.contains("insufficient funds") { - Err(PcpEthConnectorError::InsufficientFunds(payload.message.to_string())) + Err(PcpEthConnectorError::InsufficientFunds(payload.message.clone())) } else { Ok(false) } } } -pub async fn send_transaction( - signer_address: Address, - base_call_builder: CallBuilder<(), &&P, D>, +pub async fn send_transaction< + P: Provider + Clone, + T: Transport + Clone, + D: CallDecoder + Clone, +>( + base_call_builder: CallBuilder, send_transaction_error_rules: &[Box], number_retry: u32, gas_limit: u128, ) -> Result<(), PcpClientError> { - let base_call_builder = base_call_builder.from(signer_address); - - // Fetch initial gas estimate - let mut estimate_gas = base_call_builder - .estimate_gas() - .await - .map_err(|_| PcpClientError::Internal("Gas estimation failed".into()))? - as u128; - - // Apply an initial 20% buffer + info!("Sending transaction with gas limit: {}", gas_limit); + //validate gas price. + let mut estimate_gas = base_call_builder.estimate_gas().await.expect("Failed to estimate gas"); + // Add 20% because initial gas estimate are too low. estimate_gas += (estimate_gas * 20) / 100; - let max_gas_limit = 30_000_000; // Cap max gas to avoid runaway values - estimate_gas = estimate_gas.min(max_gas_limit); - - info!("Initial estimated gas: {}", estimate_gas); - for attempt in 0..number_retry { - info!("Retry attempt: {}", attempt + 1); + info!("estimated_gas: {}", estimate_gas); - // Clone the base call builder and set gas limit - let mut call_builder = base_call_builder.clone().gas(estimate_gas as u64); + // Sending Transaction automatically can lead to errors that depend on the state for Eth. + // It's convenient to manage some of them automatically to avoid to fail commitment Transaction. + // I define a first one but other should be added depending on the test with mainnet. + for _ in 0..number_retry { + let call_builder = base_call_builder.clone().gas(estimate_gas); - // Fetch gas price with a 20% buffer - let mut gas_price = call_builder + //detect if the gas price doesn't execeed the limit. + let gas_price = call_builder .provider .get_gas_price() .await @@ -128,43 +124,45 @@ pub async fn send_transaction( return Err(PcpEthConnectorError::GasLimitExceed(transaction_fee_wei, gas_limit).into()); } - // Attempt to send the transaction + info!("Sending transaction with gas: {}", estimate_gas); + + //send the Transaction and detect send error. let pending_transaction = match call_builder.send().await { - Ok(tx) => tx, + Ok(pending_transaction) => pending_transaction, Err(err) => { - // Apply verification rules on failure + //apply defined rules. for rule in send_transaction_error_rules { + // Verify all rules. If one rule return true or an error stop verification. + // If true retry with more gas else return the error. if rule.verify(&err)? { + //increase gas of 10% and retry estimate_gas += (estimate_gas * 10) / 100; - estimate_gas = estimate_gas.min(max_gas_limit); // Prevent excessive gas increases + tokio::time::sleep(tokio::time::Duration::from_secs(1)).await; continue; } } + return Err(PcpEthConnectorError::from(err).into()); } }; - // Check transaction receipt match pending_transaction.get_receipt().await { - Ok(receipt) if !receipt.status() => { + // Transaction execution fail + Ok(transaction_receipt) if !transaction_receipt.status() => { tracing::debug!( - "Transaction failed. Gas used: {} / Estimated gas: {}", - receipt.gas_used, - estimate_gas + "transaction_receipt.gas_used: {} / estimate_gas: {estimate_gas}", + transaction_receipt.gas_used ); - - let tx_gas_threshold = estimate_gas - (estimate_gas * 10) / 100; - if receipt.gas_used as u128 >= tx_gas_threshold { - tracing::info!( - "Transaction failed due to insufficient gas, retrying with increased gas." - ); + // Some valid Tx can abort cause of insufficient gas without consuming all its gas. + // Define a threshold a little less than estimated gas to detect them. + let tx_gas_consumption_threshold = estimate_gas - (estimate_gas * 10) / 100; + if transaction_receipt.gas_used >= tx_gas_consumption_threshold { + tracing::info!("Send commitment Transaction fail because of insufficient gas, receipt:{transaction_receipt:?} "); estimate_gas += (estimate_gas * 30) / 100; - estimate_gas = estimate_gas.min(max_gas_limit); continue; } else { return Err(PcpEthConnectorError::RpcTransactionExecution(format!( - "Transaction failed and was aborted. Receipt: {:?}", - receipt + "Send commitment Transaction fail, abort Transaction, receipt:{transaction_receipt:?}" )) .into()); } diff --git a/protocol/pcp/dlu/eth/contracts/.DS_Store b/protocol/pcp/dlu/eth/contracts/.DS_Store new file mode 100644 index 00000000..10f4d430 Binary files /dev/null and b/protocol/pcp/dlu/eth/contracts/.DS_Store differ diff --git a/protocol/pcp/dlu/eth/contracts/.github/workflows/test.yml b/protocol/pcp/dlu/eth/contracts/.github/workflows/test.yml new file mode 100644 index 00000000..9282e829 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/.github/workflows/test.yml @@ -0,0 +1,34 @@ +name: test + +on: workflow_dispatch + +env: + FOUNDRY_PROFILE: ci + +jobs: + check: + strategy: + fail-fast: true + + name: Foundry project + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Install Foundry + uses: foundry-rs/foundry-toolchain@v1 + with: + version: nightly + + - name: Run Forge build + run: | + forge --version + forge build --sizes + id: build + + - name: Run Forge tests + run: | + forge test -vvv + id: test diff --git a/protocol/pcp/dlu/eth/contracts/.gitignore b/protocol/pcp/dlu/eth/contracts/.gitignore index 1f9b97e3..942ef36b 100644 --- a/protocol/pcp/dlu/eth/contracts/.gitignore +++ b/protocol/pcp/dlu/eth/contracts/.gitignore @@ -2,6 +2,9 @@ cache/ out/ broadcast/ +artifacts/ +typechain-types/ +cache_hardhat/ lib/ diff --git a/protocol/pcp/dlu/eth/contracts/.prettierrc b/protocol/pcp/dlu/eth/contracts/.prettierrc new file mode 100644 index 00000000..35c04d5c --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/.prettierrc @@ -0,0 +1,16 @@ +{ + "printWidth": 120, + "singleQuote": true, + "trailingComma": "all", + "arrowParens": "avoid", + "overrides": [ + { + "files": "*.sol", + "options": { + "singleQuote": false + } + } + ], + "plugins": ["prettier-plugin-solidity"] + } + \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/deployments/local.json b/protocol/pcp/dlu/eth/contracts/deployments/local.json new file mode 100644 index 00000000..e402e09b --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/deployments/local.json @@ -0,0 +1,15 @@ +{ + "ProxyAdmin": "0xB965D10739e19a9158e7f713720B0145D996E370", + "MoveToken": { + "implementation": "0x3A8C1bd531b5C1aeFBB9ebc3e021C1251cF4Ccb1", + "proxy": "0x80741a37E3644612F0465145C9709a90B6D77Ee3" + }, + "MovementStaking": { + "implementation": "0x38435Ac0E0e9Bd8737c476F8F39a24b0735e00dc", + "proxy": "0xE19dddcaF5dCb2Ec0Fe52229e3133B99396f22e2" + }, + "PCP": { + "implementation": "0x1430c9c2143F97aaE765197e744BaBa7e78acaf0", + "proxy": "0x2A3365C575a5Fc8fD2842B82D29f8035E7f71CeC" + } +} \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/foundry.toml b/protocol/pcp/dlu/eth/contracts/foundry.toml index 2bc70ba5..1b94acb3 100644 --- a/protocol/pcp/dlu/eth/contracts/foundry.toml +++ b/protocol/pcp/dlu/eth/contracts/foundry.toml @@ -2,3 +2,16 @@ src = "src" out = "out" libs = ["lib"] +ffi = true +gas_limit = 9223372036854775807 # this is only needed for the multiround settlement test +build_info = true +extra_output = ["storageLayout"] + +solc = "0.8.26" +evm_version = "cancun" + +fs_permissions = [{ access = "read-write", path = "./script/"}] + +[profile.dependencies] +openzeppelin = { git = "https://github.com/OpenZeppelin/openzeppelin-contracts", tag = "v4.7.0" } + diff --git a/protocol/pcp/dlu/eth/contracts/hardhat.config.ts b/protocol/pcp/dlu/eth/contracts/hardhat.config.ts new file mode 100644 index 00000000..1bc66477 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/hardhat.config.ts @@ -0,0 +1,31 @@ +import { task } from "hardhat/config"; +import "@nomicfoundation/hardhat-toolbox"; +import "@nomicfoundation/hardhat-ethers"; +import "./scripts/tasks/utils"; + +export default { + solidity: { + version: "0.8.22", + settings: { + optimizer: { + enabled: true, + runs: 200 + } + } + }, + paths: { + sources: "./src", // Point to src directory + tests: "./test", // Point to test directory + cache: "./cache_hardhat", // Use separate cache for Hardhat + artifacts: "./artifacts" // Where compiled contracts will go + }, + networks: { + localnet: { + url: "http://127.0.0.1:52603", // Updated Kurtosis RPC URL + accounts: [ + "bcdf20249abf0ed6d944c0288fad489e33f66b3960d9e6229c1cd214ed3bbe31", // deployer + "39725efee3fb28614de3bacaffe4cc4bd8c436257e2c8bb887c4b5c4be45e76d" // funded account + ] + }, + }, +}; diff --git a/protocol/pcp/dlu/eth/contracts/kurtosis_instructions.md b/protocol/pcp/dlu/eth/contracts/kurtosis_instructions.md new file mode 100644 index 00000000..4314a553 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/kurtosis_instructions.md @@ -0,0 +1,248 @@ +# Testing the PCP Contract with Kurtosis + +This guide provides step-by-step instructions for setting up and testing the PCP contract using Kurtosis. + +## 1. Prerequisites +- [Docker](https://docs.docker.com/get-docker/) +- [Kurtosis CLI](https://docs.kurtosis.com/install) +- [Node.js](https://nodejs.org/) with `yarn` +- [Foundry](https://book.getfoundry.sh/) for Solidity development +- [Hardhat](https://hardhat.org/) for testing + +## 2. Installation & Setup + +### 2.1 Install Kurtosis +```sh +brew install kurtosis-tech/tap/kurtosis-cli +``` + +Start Docker and verify installation: +```sh +docker image ls +``` + +### 2.2 Install Development Dependencies +```sh +# Initialize Foundry +cd pcp/contracts +forge init --force --no-git + +# Install dependencies +chmod +x script/install-deps.sh +./script/install-deps.sh + +# Install npm dependencies +yarn install +``` + +## 3. Setting Up Local Ethereum Testnet + +### 3.1 Start the Testnet +```sh +kurtosis --enclave local-eth-testnet run github.com/ethpandaops/ethereum-package +``` +check: maybe the following command is better: +```sh +kurtosis run github.com/ethpandaops/ethereum-package +``` + +Expected output: +```sh +INFO[2023-04-04T18:09:44-04:00] ====================================================== +INFO[2023-04-04T18:09:44-04:00] || Created enclave: local-eth-testnet || +INFO[2023-04-04T18:09:44-04:00] ====================================================== +``` + +To stop, run + +```sh +kurtosis clean -a +``` + +### 3.2 Verify Testnet Status +```sh +kurtosis enclave inspect local-eth-testnet +# or +kurtosis enclave ls +``` + +Note the `rpc` port from the `el-1-geth-lighthouse` output (e.g., `127.0.0.1:49653`). + +### 3.3 Note Default Funded Account + +The pre-funded accounts can be found in the Kurtosis output when starting the network. +Look for the "pre_funded_accounts" section which contains addresses and private keys. The first address is + +```json +{ + "address": "0x8943545177806ED17B9F23F0a21ee5948eCaa776", + "private_key": "bcdf20249abf0ed6d944c0288fad489e33f66b3960d9e6229c1cd214ed3bbe31" +} +``` + +## 4. Deploying Contracts + +There are two ways to deploy the contracts: + +1. Using Hardhat (recommended) +2. Using Foundry (currently not recommended) + +### 4.1 Option A: Development Deployment using `hardhat` + +Try some basic tests first to make sure we can apply transactions + +```sh +npx hardhat balance --network localnet --address 0x8943545177806ED17B9F23F0a21ee5948eCaa776 +npx hardhat sendTx --network localnet --to 0x1234567890abcdef1234567890abcdef12345678 --amount 0.1 +``` + +> ⚠️ **Note**: Version compatibility is important: +> - ethers: v6.0.0 +> - @nomicfoundation/hardhat-ethers: v3.0.4 +> - @typechain/ethers-v6: v0.5.0 + +Install all required dependencies: +```sh +yarn install + +# If you see any missing dependency errors, run yarn install again +# This may happen as some dependencies have peer dependencies +``` + +Update the [hardhat.config.ts](hardhat.config.ts) file with your RPC port: +```ts +localnet: { + url: 'http://127.0.0.1:', +... +``` + +Replace `` with the actual RPC port noted earlier and then test the connection: + +```sh +npx hardhat accounts --network localnet +``` + +**Deploy Contracts** +```sh +npx hardhat clean +npx hardhat compile +npx hardhat run scripts/deploy.ts --network localnet +``` + +**Run Tests** +```sh +npx hardhat test --network localnet +``` + +**Verify the deployment** +```sh +npx hardhat run scripts/test-deployment.ts --network localnet +``` + +#### 4.2 Option B: Development Deployment (with `forge`) + +> ⚠️ **Warning**: The forge deployment approach is currently not working reliably with Kurtosis. +> Development has been paused in favor of the Hardhat approach. The Foundry instructions below are kept for reference. + +**Setup** +First, ensure Foundry is initialized. You may have to run the following. +```sh +cd protocol/pcp/contracts +forge init --force --no-git +``` + +Then install dependencies using the provided script: +```sh +chmod +x script/install-deps.sh +./script/install-deps.sh +``` + +It may be that this causes an error and requires some dependencies to be installed manually. (Remove this comment once this is resolved). Such as: +```sh +forge install safe-global/safe-smart-account --no-commit +forge install transmissions11/solmate --no-commit +``` + +Install npm dependencies using the provided package.json: +```sh +yarn install +``` + +**Deployment Files** +The following files are required for deployment and need to be updated when deploying a Kurtosis enclave: + +1. The configuration settings are defined in `script/helpers/config.json` +2. The deployment addresses will be tracked in `script/helpers/deployments.json`. This file will be updated as contracts are deployed. + +**Deployment** +```sh +forge script script/DeployPCPDev.s.sol:DeployPCPDev \ + --rpc-url http://127.0.0.1: \ + --private-key \ + --broadcast +``` + +Run the automated verification script: + +```sh +chmod +x script/verify-pcp.sh +./script/verify-pcp.sh +``` + +#### 4.3 Option C: Production Deployment (with `forge`) + +Production-like Deployment (Optional, requires Safe contracts): + +```sh +# Only attempt this after testing with the development deployment +# This deploys PCP using previously deployed Safe contracts +forge script script/DeployPCP.s.sol:DeployPCP \ + --rpc-url http://127.0.0.1: \ + --private-key \ + --broadcast +``` + +### 5 Additional Deployment Steps + +### 5.1 Deploy Safe Contracts + +The PCP deployment requires Safe contracts for governance. Deploy them using the provided script: + +```sh +cd pcp/contracts +chmod +x script/deploy-safe.sh +./script/deploy-safe.sh http://127.0.0.1: +``` + +This will deploy all required Safe contracts and save their addresses to `script/helpers/safe-deployments.json`. + +Note: Keep track of the deployed addresses as they'll be needed for the PCP deployment. + +### 5.2 Verify Deployment + +```sh +chmod +x script/verify-pcp.sh +./script/verify-pcp.sh +``` + +## 5. Advanced Configuration (Optional) + +### 5.1 Custom Network Parameters +Create `eth-network-params.json`: +```json +{ + "participants": [ + { "el_client_type": "geth", "cl_client_type": "lighthouse" } + ], + "network_params": { + "network_id": "3151908", + "seconds_per_slot": 12, + "genesis_delay": 120 + } +} +``` + +### 5.2 Run with Custom Configuration +```sh +kurtosis clean -a && kurtosis run --enclave local-eth-testnet github.com/ethpandaops/ethereum-package --args-file eth-network-params.json +``` diff --git a/protocol/pcp/dlu/eth/contracts/package.json b/protocol/pcp/dlu/eth/contracts/package.json new file mode 100644 index 00000000..f0445d75 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/package.json @@ -0,0 +1,34 @@ +{ + "name": "hardhat-project", + "dependencies": { + "@openzeppelin/contracts": "^5.0.0", + "@openzeppelin/contracts-upgradeable": "^5.0.0" + }, + "devDependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", + "@nomicfoundation/hardhat-ethers": "^3.0.0", + "@nomicfoundation/hardhat-ignition": "^0.15.10", + "@nomicfoundation/hardhat-ignition-ethers": "^0.15.0", + "@nomicfoundation/hardhat-network-helpers": "^1.0.0", + "@nomicfoundation/hardhat-toolbox": "^5.0.0", + "@nomicfoundation/hardhat-verify": "^2.0.0", + "@nomicfoundation/ignition-core": "^0.15.10", + "@nomiclabs/hardhat-ethers": "^2.2.3", + "@typechain/ethers-v5": "^10.0.0", + "@typechain/ethers-v6": "0.5.1", + "@typechain/hardhat": "^9.0.0", + "@types/chai": "^4.2.0", + "@types/mocha": ">=9.1.0", + "@types/node": "18.15.3", + "chai": "^4.2.0", + "ethers": "^6.0.0", + "hardhat": "^2.22.19", + "hardhat-gas-reporter": "^1.0.8", + "solidity-coverage": "^0.8.1", + "ts-node": "^10.9.2", + "typechain": "8.3.2", + "typescript": "4.9.5" + } +} diff --git a/protocol/pcp/dlu/eth/contracts/remappings.txt b/protocol/pcp/dlu/eth/contracts/remappings.txt index d19816eb..f93fce20 100644 --- a/protocol/pcp/dlu/eth/contracts/remappings.txt +++ b/protocol/pcp/dlu/eth/contracts/remappings.txt @@ -12,3 +12,4 @@ openzeppelin/=lib/createx/lib/openzeppelin-contracts/contracts/ @safe-smart-account/=lib/safe-smart-account/ solady/=lib/createx/lib/solady/ solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/ +solmate/=lib/solmate/src/ diff --git a/protocol/pcp/dlu/eth/contracts/scripts/README.md b/protocol/pcp/dlu/eth/contracts/scripts/README.md new file mode 100644 index 00000000..90927e69 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/scripts/README.md @@ -0,0 +1,3 @@ +In this directory we attempt the same as with the deploy script for foundry. + +We use hardhat to deploy the contracts, since with Kurtosis, foundry did not work. diff --git a/protocol/pcp/dlu/eth/contracts/scripts/deploy.ts b/protocol/pcp/dlu/eth/contracts/scripts/deploy.ts new file mode 100644 index 00000000..02d92e35 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/scripts/deploy.ts @@ -0,0 +1,154 @@ +import { ethers } from "hardhat"; +import * as fs from 'fs'; +import * as path from 'path'; + +async function main() { + try { + console.log("Starting PCP Dev deployment..."); + const [deployer] = await ethers.getSigners(); + console.log("Deploying contracts with account:", deployer.address); + + const deployments = { + ProxyAdmin: "", + MoveToken: { implementation: "", proxy: "" }, + MovementStaking: { implementation: "", proxy: "" }, + PCP: { implementation: "", proxy: "" } + }; + + // Deploy ProxyAdmin + const ProxyAdmin = await ethers.getContractFactory("ProxyAdmin"); + const proxyAdmin = await ProxyAdmin.deploy(deployer.address); + await proxyAdmin.waitForDeployment(); + console.log("Deployed ProxyAdmin at:", await proxyAdmin.getAddress()); + deployments.ProxyAdmin = await proxyAdmin.getAddress(); + + // Deploy MintableToken implementation + console.log("Deploying MintableToken implementation..."); + const MoveToken = await ethers.getContractFactory("MintableToken"); + const moveTokenImpl = await MoveToken.deploy(); + await moveTokenImpl.waitForDeployment(); + console.log("Deployed MintableToken implementation at:", await moveTokenImpl.getAddress()); + deployments.MoveToken.implementation = await moveTokenImpl.getAddress(); + + // Deploy other implementations + const MovementStaking = await ethers.getContractFactory("MovementStaking"); + const PCP = await ethers.getContractFactory("PCP"); + const TransparentProxy = await ethers.getContractFactory("TransparentUpgradeableProxy"); + + const stakingImpl = await MovementStaking.deploy(); + await stakingImpl.waitForDeployment(); + console.log("Deployed MovementStaking implementation at:", await stakingImpl.getAddress()); + deployments.MovementStaking.implementation = await stakingImpl.getAddress(); + + const pcpImpl = await PCP.deploy(); + await pcpImpl.waitForDeployment(); + console.log("Deployed PCP implementation at:", await pcpImpl.getAddress()); + deployments.PCP.implementation = await pcpImpl.getAddress(); + + // Prepare MOVE token proxy deployment + console.log("Preparing MOVE token proxy deployment..."); + const moveTokenData = MoveToken.interface.encodeFunctionData("initialize", [ + "Move Token", + "MOVE" + ]); + + console.log("Deploying MOVE token proxy..."); + const moveTokenProxy = await TransparentProxy.deploy( + await moveTokenImpl.getAddress(), + await proxyAdmin.getAddress(), + moveTokenData + ); + await moveTokenProxy.waitForDeployment(); + console.log("Deployed MOVE token proxy at:", await moveTokenProxy.getAddress()); + deployments.MoveToken.proxy = await moveTokenProxy.getAddress(); + + // Deploy staking proxy + console.log("Deploying staking proxy..."); + // const stakingData = MovementStaking.interface.encodeFunctionData("initialize", [ + // await moveTokenProxy.getAddress() + // ]); + const stakingData = MovementStaking.interface.encodeFunctionData( + "initialize(address)", + [await moveTokenProxy.getAddress()] + ); + + + const stakingProxy = await TransparentProxy.deploy( + await stakingImpl.getAddress(), + await proxyAdmin.getAddress(), + stakingData + ); + await stakingProxy.waitForDeployment(); + console.log("Deployed staking proxy at:", await stakingProxy.getAddress()); + deployments.MovementStaking.proxy = await stakingProxy.getAddress(); + + // Deploy PCP proxy + console.log("Deploying PCP proxy..."); + const custodians = [await moveTokenProxy.getAddress()]; + console.log("Custodian Address:", custodians[0]); // Debugging output + + const pcpData = PCP.interface.encodeFunctionData( + "initialize(address,uint256,uint256,uint256,address[],uint256,address)", + [ + await stakingProxy.getAddress(), // stakingContract + 0, // lastPostconfirmedSuperBlockHeight + 5, // leadingSuperBlockTolerance + 10, // epochDuration (10 seconds) + custodians, // custodians array + 5, // postconfirmerDuration (5 seconds) + await moveTokenProxy.getAddress() // moveTokenAddress + ] + ); + + const pcpProxy = await TransparentProxy.deploy( + await pcpImpl.getAddress(), + await proxyAdmin.getAddress(), + pcpData + ); + await pcpProxy.waitForDeployment(); + console.log("Deployed PCP proxy at:", await pcpProxy.getAddress()); + deployments.PCP.proxy = await pcpProxy.getAddress(); + + // Set up roles and initial token distribution + console.log("Setting up roles and minting initial tokens..."); + const moveToken = MoveToken.attach(await moveTokenProxy.getAddress()); + const pcp = PCP.attach(await pcpProxy.getAddress()); + + // Mint initial tokens and set up roles + await moveToken.mint(deployer.address, ethers.parseEther("100000")); + await moveToken.grantMinterRole(deployer.address); + await moveToken.grantMinterRole(await stakingProxy.getAddress()); + await pcp.grantCommitmentAdmin(deployer.address); + + // Log deployment addresses and configuration + console.log("\n=== Deployment Complete ==="); + console.log("MOVE Token Proxy:", await moveTokenProxy.getAddress()); + console.log("Staking Proxy:", await stakingProxy.getAddress()); + console.log("PCP Proxy:", await pcpProxy.getAddress()); + + // Verify deployment + const deployerBalance = await moveToken.balanceOf(deployer.address); + console.log("\n=== Verification ==="); + console.log("Deployer MOVE Balance:", ethers.formatEther(deployerBalance)); + console.log("Epoch Duration:", await pcp.getEpochDuration()); + console.log("Postconfirmer Duration:", await pcp.getPostconfirmerDuration()); + + // Save deployments + const deploymentsPath = path.join(__dirname, '../deployments/local.json'); + fs.writeFileSync(deploymentsPath, JSON.stringify(deployments, null, 2)); + } catch (error) { + console.error("Detailed error:", error); + if (error instanceof Error) { + console.error("Error message:", error.message); + console.error("Error stack:", error.stack); + } + throw error; + } +} + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/protocol/pcp/dlu/eth/contracts/scripts/tasks/utils.ts b/protocol/pcp/dlu/eth/contracts/scripts/tasks/utils.ts new file mode 100644 index 00000000..7497fc72 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/scripts/tasks/utils.ts @@ -0,0 +1,44 @@ +import { task } from "hardhat/config"; + +// Task to check balance of an address +// Example: npx hardhat balance --network localnet --address 0x8943545177806ED17B9F23F0a21ee5948eCaa776 +task("balance", "Gets the balance of an address") + .addParam("address", "The account address") + .setAction(async (taskArgs, hre) => { + const balance = await hre.ethers.provider.getBalance(taskArgs.address); + console.log(`Balance: ${hre.ethers.formatEther(balance)} ETH`); + }); + +// Task to send ETH and show sender & recipient balances before and after +// Example: npx hardhat sendTx --network localnet --to 0x1234567890abcdef1234567890abcdef12345678 --amount 0.1 +task("sendTx", "Sends ETH and shows sender & recipient balances before and after") + .addParam("to", "The recipient address") + .addParam("amount", "The amount in ETH") + .setAction(async (taskArgs, hre) => { + const [signer] = await hre.ethers.getSigners(); + + // Fetch initial balances + const senderBalanceBefore = await hre.ethers.provider.getBalance(signer.address); + const recipientBalanceBefore = await hre.ethers.provider.getBalance(taskArgs.to); + + console.log(`Sender (${signer.address}) balance before: ${hre.ethers.formatEther(senderBalanceBefore)} ETH`); + console.log(`Recipient (${taskArgs.to}) balance before: ${hre.ethers.formatEther(recipientBalanceBefore)} ETH`); + + console.log(`Sending ${taskArgs.amount} ETH from ${signer.address} to ${taskArgs.to}...`); + + const tx = await signer.sendTransaction({ + to: taskArgs.to, + value: hre.ethers.parseEther(taskArgs.amount), + }); + + console.log("Transaction sent! Hash:", tx.hash); + await tx.wait(); + console.log("Transaction confirmed."); + + // Fetch updated balances + const senderBalanceAfter = await hre.ethers.provider.getBalance(signer.address); + const recipientBalanceAfter = await hre.ethers.provider.getBalance(taskArgs.to); + + console.log(`Sender (${signer.address}) balance after: ${hre.ethers.formatEther(senderBalanceAfter)} ETH`); + console.log(`Recipient (${taskArgs.to}) balance after: ${hre.ethers.formatEther(recipientBalanceAfter)} ETH`); + }); \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/scripts/test-deployment.ts b/protocol/pcp/dlu/eth/contracts/scripts/test-deployment.ts new file mode 100644 index 00000000..7f7cab77 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/scripts/test-deployment.ts @@ -0,0 +1,283 @@ +import { ethers, type Wallet } from "ethers"; +import { ethers as hreEthers } from "hardhat"; +import * as fs from 'fs'; +import * as path from 'path'; +import { IMovementStaking, PCP } from "../typechain-types"; // Make sure types are generated +import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20"; // Add at top with other imports +import { AccessControl } from "@openzeppelin/contracts/access/AccessControl"; +import { IPCP } from "../typechain-types"; // Make sure types are generated +import { PCPStorage } from "../typechain-types"; // Add PCPStorage import + + + + +// - - - - - - - - - - Main - - - - - - - - - - + +async function main() { + try { + console.log("\n=== Starting Deployment Verification ===\n"); + + // Get contract addresses + const deployments = JSON.parse(fs.readFileSync( + path.join(__dirname, '../deployments/local.json'), + 'utf8' + )); + + // Setup contracts + const moveToken = await hreEthers.getContractAt("MintableToken", deployments.MoveToken.proxy) as unknown as IERC20; + const staking = await hreEthers.getContractAt("MovementStaking", deployments.MovementStaking.proxy) as unknown as IMovementStaking & AccessControl; + const pcpContract = await hreEthers.getContractAt("PCP", deployments.PCP.proxy) as unknown as PCP; + const pcp = await hreEthers.getContractAt("PCP", deployments.PCP.proxy) as unknown as IPCP; + const { deployer, staker } = await setupAccounts(); + // await testEthTransfers(staker as unknown as ethers.Wallet); + + // Fund staker with MOVE first + console.log("Funding staker with MOVE tokens..."); + const fundMoveTx = await moveToken.connect(deployer).transfer(staker.address, ethers.parseEther("3")); + await fundMoveTx.wait(); + console.log("Staker MOVE balance:", ethers.formatEther(await moveToken.balanceOf(staker.address))); + // await testMoveTransfers(moveToken, staker as unknown as ethers.Wallet); + + // Test Staking and PCP + await testStaking(staking, moveToken, deployments.PCP.proxy, staker as unknown as ethers.Wallet); + await testPCP(pcp, pcpContract, moveToken, staker as unknown as ethers.Wallet, deployer); + await testUnstaking(staking, moveToken, deployments.PCP.proxy, staker as unknown as ethers.Wallet, pcp); + + + console.log("\n=== Verification Complete ==="); + } catch (error) { + console.error("Verification failed:", error); + throw error; + } +} + +// - - - - - - - - - - The Functions - - - - - - - - - - + +// This function sets up the deployer and staker accounts +async function setupAccounts() { + const [deployer] = await hreEthers.getSigners(); + const staker = ethers.Wallet.createRandom().connect(hreEthers.provider); + console.log("Deployer account:", deployer.address); + console.log("Staker account:", staker.address); + + // Fund staker with ETH + const fundTx = await deployer.sendTransaction({ + to: staker.address, + value: ethers.parseEther("10") + }); + await fundTx.wait(); + + return { deployer, staker }; +} + +// This function tests the ETH transfers +async function testEthTransfers(staker: ethers.Wallet) { + console.log("---------- Testing ETH transfers -------------------"); + const randomAddress = ethers.Wallet.createRandom().address; + console.log("Staker sends 1 ETH to random address..."); + const tx = await staker.sendTransaction({ + to: randomAddress, + value: ethers.parseEther("1") + }); + await tx.wait(); + + const balance = await hreEthers.provider.getBalance(randomAddress); + if (balance !== ethers.parseEther("1")) { + throw new Error("ETH transfer failed"); + } + console.log("ETH transfer successful"); +} + +// This function tests the MOVE token transfers +async function testMoveTransfers(moveToken: IERC20, staker: ethers.Wallet) { + console.log("---------- Testing MOVE transfers -------------------"); + const randomAddress = ethers.Wallet.createRandom().address; + console.log("Staker sends 1 MOVE to random address..."); + + const tx = await moveToken.connect(staker).transfer(randomAddress, ethers.parseEther("1")); + await tx.wait(); + + const balance = await moveToken.balanceOf(randomAddress); + if (balance !== ethers.parseEther("1")) { + throw new Error("MOVE transfer failed"); + } + console.log("MOVE transfer successful"); +} + +// This function tests the staking functionality +async function testStaking( + staking: IMovementStaking & AccessControl, + moveToken: IERC20, + pcpAddress: string, + staker: ethers.Wallet +) { + console.log("\n=== Testing Staking Functionality ==="); + const stakeAmount = ethers.parseEther("1"); + + // Whitelist and verify + const txWhitelist = await staking.whitelistAddress(staker.address); + await txWhitelist.wait(); + if (!await staking.hasRole(await staking.WHITELIST_ROLE(), staker.address)) { + throw new Error("Whitelisting failed"); + } + + // Approve and verify + const txApprove = await moveToken.connect(staker).approve(staking.target, stakeAmount); + await txApprove.wait(); + if (await moveToken.allowance(staker.address, staking.target) !== stakeAmount) { + throw new Error("Token approval failed"); + } + + // Stake and verify + const txStake = await staking.connect(staker).stake(pcpAddress, moveToken.target, stakeAmount); + await txStake.wait(); + if (await staking.getAttesterStakeForAcceptingEpoch(pcpAddress, staker.address) !== stakeAmount) { + throw new Error("Staking failed"); + } + + console.log("Staking successful - amount:", ethers.formatEther(stakeAmount)); + + const registeredAttesters = await staking.getRegisteredAttesters(pcpAddress); + console.log("Registered Attesters:", registeredAttesters); + const stakedAttesters = await staking.getStakedAttestersForAcceptingEpoch(pcpAddress); + console.log("Staked Attesters:", stakedAttesters); +} + +// This function tests the PCP functionality +async function testPCP( + pcp: IPCP, + pcpContract: PCP, + moveToken: IERC20, + staker: ethers.Wallet, + deployer: ethers.Wallet +) { + console.log("\n=== Testing PCP Functionality ==="); + + // Grant COMMITMENT_ADMIN role to deployer + const COMMITMENT_ADMIN = await pcpContract.COMMITMENT_ADMIN(); + const txGrantAdminRole = await pcpContract.grantRole(COMMITMENT_ADMIN, deployer.address); + await txGrantAdminRole.wait(); + console.log("Commitment admin role granted to deployer"); + + const TRUSTED_ATTESTER = await pcpContract.TRUSTED_ATTESTER(); + const txGrantRole = await pcpContract.grantRole(TRUSTED_ATTESTER, staker.address); + await txGrantRole.wait(); + const hasRole = await pcpContract.hasRole(TRUSTED_ATTESTER, staker.address); + if (!hasRole) { + throw new Error("TRUSTED_ATTESTER role not granted"); + } + console.log("Attester role granted to staker: ", hasRole); + const stakerBalance = await moveToken.balanceOf(staker.address); + console.log("Staker balance:", ethers.formatEther(stakerBalance)); + + const epochDuration = await pcp.connect(staker).getEpochDuration(); + console.log("Epoch duration (seconds):", Number(epochDuration)); + const acceptingEpoch = await pcp.connect(staker).getAcceptingEpoch(); + console.log("Accepting epoch:", acceptingEpoch); + // pcp contract should set the accepting epoch to the present epoch + const presentEpoch = await pcp.connect(deployer).getPresentEpoch(); + console.log("Present epoch:", presentEpoch); + const txSetAcceptingEpoch = await pcp.connect(deployer).setAcceptingEpoch(presentEpoch - 2n); + await txSetAcceptingEpoch.wait(); + const acceptingEpoch2 = await pcp.connect(staker).getAcceptingEpoch(); + console.log("Accepting epoch after setting to present epoch:", acceptingEpoch2); + if (presentEpoch > acceptingEpoch) { + console.log("Present epoch is greater than accepting epoch, so rollover should update the accepting epoch."); + } + + // rollover the epoch + const txRollover = await pcp.connect(staker).postconfirmSuperBlocksAndRollover(); + await txRollover.wait(); + const acceptingEpoch3 = await pcp.connect(staker).getAcceptingEpoch(); + console.log("New accepting epoch after rollover:", acceptingEpoch3); + + // submit a dummy commitment + const initialPostconfirmedSuperblockHeight = await pcp.getLastPostconfirmedSuperBlockHeight(); + console.log("Initial postconfirmed superblock height:", initialPostconfirmedSuperblockHeight); + const dummyCommitment = { + height: initialPostconfirmedSuperblockHeight + 1n, + commitment: ethers.randomBytes(32), + blockId: ethers.randomBytes(32) + } as const; + const txCommit = await pcp.connect(staker).submitSuperBlockCommitment(dummyCommitment); + await txCommit.wait(); + const lastPostconfirmedSuperblockHeight = await pcp.getLastPostconfirmedSuperBlockHeight(); + console.log("Last postconfirmed superblock height:", lastPostconfirmedSuperblockHeight); + const newAcceptingEpoch = await pcp.getAcceptingEpoch(); + console.log("Accepting epoch:", newAcceptingEpoch); + + // postconfirm + const txPostconfirm = await pcp.connect(staker).postconfirmSuperBlocksAndRollover(); + await txPostconfirm.wait(); + const newPostconfirmedSuperblockHeight = await pcp.getLastPostconfirmedSuperBlockHeight(); + if (newPostconfirmedSuperblockHeight !== dummyCommitment.height) { + throw new Error("Last postconfirmed superblock height mismatch"); + } + console.log("Last postconfirmed superblock height:", newPostconfirmedSuperblockHeight); + const newAcceptingEpoch2 = await pcp.getAcceptingEpoch(); + console.log("Accepting epoch:", newAcceptingEpoch2); + const newStakerBalance = await moveToken.balanceOf(staker.address); + console.log("Staker balance:", ethers.formatEther(newStakerBalance)); + + // wait for the epoch duration time to ensure at least one rollover + await new Promise(resolve => setTimeout(resolve, Number(epochDuration))); + const txRollOverEpoch = await pcp.connect(staker).postconfirmSuperBlocksAndRollover(); + await txRollOverEpoch.wait(); + const newStakerBalance3 = await moveToken.balanceOf(staker.address); + console.log("Staker balance (latest point where it should be rewarded):", ethers.formatEther(newStakerBalance3)); +} + + +// This function tests if the staker can unstake and if the stake is removed from the attester list +async function testUnstaking( + staking: IMovementStaking & AccessControl, + moveToken: IERC20, + pcpAddress: string, + staker: ethers.Wallet, + pcp: IPCP +) { + console.log("\n=== Testing Unstaking Functionality ==="); + + // initial list of active attesters + const initialActiveAttesters = await staking.getStakedAttestersForAcceptingEpoch(pcpAddress); + console.log("Initial active attesters:", initialActiveAttesters); + + // get stake amount + const stakeAmount = await staking.getAttesterStakeForAcceptingEpoch(pcpAddress, staker.address); + console.log("Stake amount:", ethers.formatEther(stakeAmount)); + + // unstake + const txUnstake = await staking.connect(staker).unstake(pcpAddress, moveToken.target, stakeAmount); + await txUnstake.wait(); + if (await staking.getAttesterStakeForAcceptingEpoch(pcpAddress, staker.address) !== 0n) { + throw new Error("Unstaking failed"); + } + console.log("Unstaking successful"); + + // warp time into next epoch + const epochDuration = await pcp.getEpochDuration(); + await new Promise(resolve => setTimeout(resolve, Number(epochDuration))); + const txRollOverEpoch2 = await pcp.connect(staker).postconfirmSuperBlocksAndRollover(); + await txRollOverEpoch2.wait(); + if (await pcp.getAcceptingEpoch() !== 3n) { + throw new Error("Epoch rollover failed"); + } + const stakerBalance4 = await moveToken.balanceOf(staker.address); + console.log("Staker balance:", ethers.formatEther(stakerBalance4)); + + // check that the staker is removed from the active attesters list + const activeAttesters = await staking.getStakedAttestersForAcceptingEpoch(pcpAddress); + console.log("Active attesters:", activeAttesters); + if (activeAttesters.includes(staker.address)) { + throw new Error("Staker is still in the active attesters list"); + } +} + + + +main() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/src/proxy/ERC1967Proxy.sol b/protocol/pcp/dlu/eth/contracts/src/proxy/ERC1967Proxy.sol new file mode 100644 index 00000000..7b831d7e --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/src/proxy/ERC1967Proxy.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.20; + +import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol"; + +contract CustomERC1967Proxy is ERC1967Proxy { + constructor(address implementation, bytes memory _data) + ERC1967Proxy(implementation, _data) + {} +} \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/src/proxy/ProxyAdmin.sol b/protocol/pcp/dlu/eth/contracts/src/proxy/ProxyAdmin.sol new file mode 100644 index 00000000..5a374987 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/src/proxy/ProxyAdmin.sol @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import "@openzeppelin/contracts/proxy/transparent/ProxyAdmin.sol"; \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/src/proxy/TransparentUpgradeableProxy.sol b/protocol/pcp/dlu/eth/contracts/src/proxy/TransparentUpgradeableProxy.sol new file mode 100644 index 00000000..741ea676 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/src/proxy/TransparentUpgradeableProxy.sol @@ -0,0 +1,4 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.19; + +import "@openzeppelin/contracts/proxy/transparent/TransparentUpgradeableProxy.sol"; \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/tsconfig.json b/protocol/pcp/dlu/eth/contracts/tsconfig.json new file mode 100644 index 00000000..f44404c8 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/tsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "target": "es2020", + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "outDir": "dist", + "resolveJsonModule": true + }, + "include": ["./scripts", "./test"], + "files": ["./hardhat.config.ts"] +} \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/README.md b/protocol/pcp/dlu/eth/contracts/upgrader/README.md new file mode 100644 index 00000000..6e4d5e10 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/README.md @@ -0,0 +1,117 @@ +# Upgrader + +The Upgrader is a script designed to automate the upgrade process for settlement protocol units, streamlining the execution of several key steps required for contract upgrades. Below is a breakdown of its main components and the steps it performs. + +## Process Overview + +### Deploy + +#### 1. Run the `safeDeploy.sh` Script + +This bash script is responsible for preparing and executing the deployment of a new contract, using a Safe multisig as the deployer. It accepts a `-c` flag to specify the contract name, a `-u` flag to specify the fork URL, and a `-k` flag to provide an Etherscan API key. + +**Steps:** + +- Ensures the contract name and URL are provided. +- Runs the deployment script to deploy the implementation contract. +- Generates transaction data and saves it for later use. +- Executes the TypeScript `safeDeploy.ts` script to complete the deployment process using the Safe API. + +**Example of Execution:** + +```bash +bash safeDeploy.sh -c ExampleContract -u https://example.url -k etherscan_api_key +``` + +#### 2. Run the propose.sh Script + +After deployment, this script is responsible for proposing an upgrade to a proxy contract. It generates the necessary transaction data and proposes the upgrade using the Safe multisig. The script accepts a -c flag for the contract name and a -u flag for the fork URL. + +### Steps + +Ensures the contract name and URL are provided. +Generates the upgrade transaction data using the deployer script. +Converts the contract name to lowercase (for consistency). +Runs the TypeScript propose.ts script, passing the necessary data to the Safe API for proposing the transaction. +Example of Execution: + +```bash +bash propose.sh -c ExampleContract -u https://example.url +``` + +### Upgrade + +#### 1. Run the acceptKms.sh Script + +This script is used to accept a transaction using a KMS (Key Management Service). It accepts a -c flag for the contract name, a -t flag for the transaction hash, and a -k flag for the key ID used in KMS. + +Steps + +- Ensures the contract name, transaction hash, and key ID are provided. +- Converts the contract name to lowercase. +- Runs the TypeScript acceptKms.ts script to accept the transaction using the KMS agent. + +Example of Execution: + +```bash +bash acceptKms.sh -c ExampleContract -t 0x123... -k key_id +``` + +#### 2. Run the accept.sh Script + +Once the transaction has been proposed, this script is responsible for accepting the upgrade proposal using the Safe API. It accepts a -c flag for the contract name and a -u flag for the fork URL. + +Steps + +- Ensures the contract name and URL are provided. +- Converts the contract name to lowercase. +- Runs the TypeScript accept.ts script to accept the upgrade proposal using the Safe API. + +Example of Execution: + +```bash +bash accept.sh -c ExampleContract -u https://example.url +``` + +## Script Breakdown + +Bash Script: safeDeploy.sh +This script handles the deployment of a contract using a Safe multisig as the deployer. It generates transaction data for the deployment and then calls the TypeScript safeDeploy.ts script to finalize the deployment. + +Flags: + +```bash +-c: Contract name (required) +-u: Fork URL (required) +-k: Etherscan API key (required) +``` + +Bash Script: propose.sh +This script generates the transaction data required for upgrading a contract and proposes the upgrade using the Safe multisig. + +Flags: + +```bash +-c: Contract name (required) +-u: Fork URL (required) +Bash Script: acceptKms.sh +This script accepts a transaction using a KMS, handling multisig approval. +``` + +Flags: + +```bash +-c: Contract name (required) +-t: Transaction hash (required) +-k: KMS key ID (required) +``` + +Bash Script: accept.sh +This script accepts the upgrade proposal through the Safe API. + +Flags: + +```bash +-c: Contract name (required) +-u: Fork URL (required) +``` diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/accept.sh b/protocol/pcp/dlu/eth/contracts/upgrader/accept.sh new file mode 100644 index 00000000..9a186ae9 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/accept.sh @@ -0,0 +1,42 @@ +# accept.sh + +#!/bin/bash + +# Initialize contract variable +contract="" +url="" + +# Parse options using getopts +while getopts "c:u:" opt; do + case $opt in + c) contract="$OPTARG" + ;; + u) url="$OPTARG" + ;; + \?) echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +echo "Contract: $contract" +echo "URL: $url" + +# Ensure the contract flag is provided +if [ -z "$contract" ]; then + echo "Error: -c flag for contract is required." + exit 1 +fi + +# Ensure the url flag is provided +if [ -z "$url" ]; then + echo "Error: -u flag for url is required." + exit 1 +fi + +# Convert contract name to lowercase +lowercase_contract=$(echo "$contract" | tr '[:upper:]' '[:lower:]') + +# Run the upgrader script +echo "Running upgrader/accept.ts" +npx tsx ./accept.ts -c "$lowercase_contract" -u $url diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/accept.ts b/protocol/pcp/dlu/eth/contracts/upgrader/accept.ts new file mode 100644 index 00000000..5b3f43c4 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/accept.ts @@ -0,0 +1,86 @@ +import Safe from "@safe-global/protocol-kit"; +//@ts-ignore +import SafeApiKit from '@safe-global/api-kit'; +import { + OperationType, + SafeTransactionDataPartial, +} from "@safe-global/safe-core-sdk-types"; +import * as fs from "fs"; +import { Command } from "commander"; +// import dotenv and load from the .env file in the parent directory +import dotenv from "dotenv"; +dotenv.config({ path: "../.env" }); + +interface Config { + CHAIN_ID: bigint; + RPC_URL: string; + SIGNER_ADDRESS_PRIVATE_KEY: string; + SAFE_ADDRESS: string; +} + +async function main() { + const private_key = process.env.PRIVATE_KEY; + if (!private_key) { + throw new Error("PRIVATE_KEY is required"); + } + + const program = new Command(); + + program.option("-c, --contract ", "contract name").option("-u, --url ", "rpc url"); + program.parse(process.argv); + + const rawData = fs.readFileSync( + `../script/helpers/upgrade/${program.opts().contract}.json`, + "utf-8" + ); + const jsonData = JSON.parse(rawData); + + const config: Config = { + CHAIN_ID: jsonData.chainId as bigint, + RPC_URL: program.opts().url || "https://sepolia.gateway.tenderly.co", + SIGNER_ADDRESS_PRIVATE_KEY: private_key, + SAFE_ADDRESS: jsonData.safeAddress, + }; + + // Create Safe API Kit instance + const apiKit = new SafeApiKit({ + chainId: config.CHAIN_ID, + }); + + + // Create Safe instance + const protocolKit = await Safe.init({ + provider: config.RPC_URL, + signer: config.SIGNER_ADDRESS_PRIVATE_KEY, + safeAddress: config.SAFE_ADDRESS, + }); + + + // Create transaction + const safeTransactionData: SafeTransactionDataPartial = { + to: jsonData.to, + value: jsonData.value || "0", + data: jsonData.data, + operation: jsonData.operation == "OperationType.Call" ? OperationType.Call : OperationType.DelegateCall, + }; + const safeTransaction = await protocolKit.createTransaction({ + transactions: [safeTransactionData], + }); + + const signerAddress = + (await protocolKit.getSafeProvider().getSignerAddress()) || "0x"; + const safeTxHash = await protocolKit.getTransactionHash(safeTransaction); + const signature = await protocolKit.signHash(safeTxHash); + + // Get transaction from the service + const transaction = await apiKit.confirmTransaction(safeTxHash, signature.data); + + console.log("Accepted a transaction with Safe:", config.SAFE_ADDRESS); + console.log("- safeTxHash:", safeTxHash); + console.log("- Sender:", signerAddress); + console.log("- Sender signature:", signature.data); + + // At what point should the upgrade/contract.json file be deleted? +} + +main(); diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/acceptKms.sh b/protocol/pcp/dlu/eth/contracts/upgrader/acceptKms.sh new file mode 100644 index 00000000..0aaa74d8 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/acceptKms.sh @@ -0,0 +1,52 @@ +# acceptKms.sh + +#!/bin/bash + +# Initialize contract variable +contract="" +transaction_hash="" +key_id="" + +# Parse options using getopts +while getopts "c:t:k:" opt; do + case $opt in + c) contract="$OPTARG" + ;; + t) transaction_hash="$OPTARG" + ;; + k) key_id="$OPTARG" + ;; + \?) echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +echo "Contract: $contract" +echo "Transaction Hash: $transaction_hash" +echo "Key ID: $key_id" + +# Ensure the contract flag is provided +if [ -z "$contract" ]; then + echo "Error: -c flag for contract is required." + exit 1 +fi + +# Ensure the transaction_hash flag is provided +if [ -z "$transaction_hash" ]; then + echo "Error: -t flag for transaction_hash is required." + exit 1 +fi + +# Ensure the key_id flag is provided +if [ -z "$key_id" ]; then + echo "Error: -k flag for key_id is required." + exit 1 +fi + +# Convert contract name to lowercase +lowercase_contract=$(echo "$contract" | tr '[:upper:]' '[:lower:]') + +# Run the upgrader script +echo "Running upgrader/acceptKms.ts" +npx tsx ./acceptKms.ts -c "$lowercase_contract" -t $transaction_hash -k $key_id diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/acceptKms.ts b/protocol/pcp/dlu/eth/contracts/upgrader/acceptKms.ts new file mode 100644 index 00000000..a96b85c1 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/acceptKms.ts @@ -0,0 +1,71 @@ +//@ts-ignore +import SafeApiKit from "@safe-global/api-kit"; +import { KMSClient, SignCommand, SignCommandInput } from "@aws-sdk/client-kms"; + +import * as fs from "fs"; +import { Command } from "commander"; +import dotenv from "dotenv"; +dotenv.config({ path: "../.env" }); + +async function main() { + const program = new Command(); + + program + .option("-c, --contract ", "contract name") + .option("-k, --key ", "key id") + .option("-h, --hash ", "hash"); + program.parse(process.argv); + + if (!program.opts().key && !program.opts().hash) { + throw new Error("PRIVATE_KEY or AWS Key Id is required"); + } + + const rawData = fs.readFileSync( + `../script/helpers/upgrade/${program.opts().contract}.json`, + "utf-8" + ); + const jsonData = JSON.parse(rawData); + + // Create Safe API Kit instance + const apiKit = new SafeApiKit({ + chainId: jsonData.chainId as bigint, + }); + + const signature = await signData(program.opts().hash, program.opts().keyId); + + // Get transaction from the service + const transaction = await apiKit.confirmTransaction(program.opts().hash, signature); + + console.log("Transaction confirmed:", transaction); + console.log("Accepted a transaction with Safe:", jsonData.safeAddress); + console.log("- safeTxHash:", program.opts().hash); + console.log("- Sender signature:", signature); + +} + +async function signData(data: string, keyId: string): Promise { + const client = new KMSClient({ region: "us-east-1" }); + + const dataBuffer = Buffer.from(data, "utf-8"); + const input: SignCommandInput = { + KeyId: keyId, + Message: dataBuffer, + MessageType: "DIGEST", + SigningAlgorithm: "ECDSA_SHA_256", + }; + + try { + const command = new SignCommand(input); + const response = await client.send(command); + if (!response.Signature) { + throw new Error("No signature returned"); + } + const signature = response.Signature.toString(); + return signature; + } catch (error) { + console.error("Error signing data:", error); + throw new Error("Error signing data"); + } +} + +main(); diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/kmsSign.ts b/protocol/pcp/dlu/eth/contracts/upgrader/kmsSign.ts new file mode 100644 index 00000000..5bd17c70 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/kmsSign.ts @@ -0,0 +1,181 @@ +import { KMS } from 'aws-sdk'; +import { keccak256 } from 'js-sha3'; +import * as ethutil from 'ethereumjs-util'; +import * as asn1 from 'asn1.js'; +import BN from 'bn.js'; +import { Transaction, TxData } from 'ethereumjs-tx'; + +const kms = new KMS({ + accessKeyId: '', // credentials for your IAM user with KMS access + secretAccessKey: '', // credentials for your IAM user with KMS access + region: 'us-east-1', + apiVersion: '2014-11-01', +}); + +const keyId = ''; + +const EcdsaSigAsnParse = asn1.define('EcdsaSig', function(this: any) { + // parsing this according to https://tools.ietf.org/html/rfc3279#section-2.2.3 + this.seq().obj( + this.key('r').int(), + this.key('s').int(), + ); +}); + +const EcdsaPubKey = asn1.define('EcdsaPubKey', function(this: any) { + // parsing this according to https://tools.ietf.org/html/rfc5480#section-2 + this.seq().obj( + this.key('algo').seq().obj( + this.key('a').objid(), + this.key('b').objid(), + ), + this.key('pubKey').bitstr() + ); +}); + +async function sign(msgHash, keyId) { + const params : KMS.SignRequest = { + // key id or 'Alias/' + KeyId: keyId, + Message: msgHash, + // 'ECDSA_SHA_256' is the one compatible with ECC_SECG_P256K1. + SigningAlgorithm: 'ECDSA_SHA_256', + MessageType: 'DIGEST' + }; + const res = await kms.sign(params).promise(); + return res; +} + +async function getPublicKey(keyPairId: string) { + return kms.getPublicKey({ + KeyId: keyPairId + }).promise(); +} + +function getEthereumAddress(publicKey: Buffer): string { + console.log("Encoded Pub Key: " + publicKey.toString('hex')); + + // The public key is ASN1 encoded in a format according to + // https://tools.ietf.org/html/rfc5480#section-2 + // I used https://lapo.it/asn1js to figure out how to parse this + // and defined the schema in the EcdsaPubKey object + let res = EcdsaPubKey.decode(publicKey, 'der'); + let pubKeyBuffer : Buffer = res.pubKey.data; + + // The public key starts with a 0x04 prefix that needs to be removed + // more info: https://www.oreilly.com/library/view/mastering-ethereum/9781491971932/ch04.html + pubKeyBuffer = pubKeyBuffer.slice(1, pubKeyBuffer.length); + + const address = keccak256(pubKeyBuffer) // keccak256 hash of publicKey + const buf2 = Buffer.from(address, 'hex'); + const EthAddr = "0x" + buf2.slice(-20).toString('hex'); // take last 20 bytes as ethereum adress + console.log("Generated Ethreum address: " + EthAddr); + return EthAddr; +} + +async function findEthereumSig(plaintext) { + let signature = await sign(plaintext, keyId); + if (signature.Signature == undefined) { + throw new Error('Signature is undefined.'); + } + console.log("encoded sig: " + signature.Signature.toString('hex')); + + let decoded = EcdsaSigAsnParse.decode(signature.Signature, 'der'); + let r : BN = decoded.r; + let s : BN = decoded.s; + console.log("r: " + r.toString(10)); + console.log("s: " + s.toString(10)); + + let tempsig = r.toString(16) + s.toString(16); + + let secp256k1N = new BN("fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141", 16); // max value on the curve + let secp256k1halfN = secp256k1N.div(new BN(2)); // half of the curve + // Because of EIP-2 not all elliptic curve signatures are accepted + // the value of s needs to be SMALLER than half of the curve + // i.e. we need to flip s if it's greater than half of the curve + if (s.gt(secp256k1halfN)) { + console.log("s is on the wrong side of the curve... flipping - tempsig: " + tempsig + " length: " + tempsig.length); + // According to EIP2 https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.md + // if s < half the curve we need to invert it + // s = curve.n - s + s = secp256k1N.sub(s); + console.log("new s: " + s.toString(10)); + return { r, s } + } + // if s is less than half of the curve, we're on the "good" side of the curve, we can just return + return { r, s } +} + +function recoverPubKeyFromSig(msg: Buffer, r : BN, s : BN, v: number) { + console.log("Recovering public key with msg " + msg.toString('hex') + " r: " + r.toString(16) + " s: " + s.toString(16)); + let rBuffer = r.toBuffer(); + let sBuffer = s.toBuffer(); + let pubKey = ethutil.ecrecover(msg, v, rBuffer, sBuffer); + let addrBuf = ethutil.pubToAddress(pubKey); + var RecoveredEthAddr = ethutil.bufferToHex(addrBuf); + console.log( "Recovered ethereum address: " + RecoveredEthAddr); + return RecoveredEthAddr; +} + +function findRightKey(msg: Buffer, r : BN, s: BN, expectedEthAddr: string) { + // This is the wrapper function to find the right v value + // There are two matching signatues on the elliptic curve + // we need to find the one that matches to our public key + // it can be v = 27 or v = 28 + let v = 27; + let pubKey = recoverPubKeyFromSig(msg, r, s, v); + if (pubKey != expectedEthAddr) { + // if the pub key for v = 27 does not match + // it has to be v = 28 + v = 28; + pubKey = recoverPubKeyFromSig(msg, r, s, v) + } + console.log("Found the right ETH Address: " + pubKey + " v: " + v); + return { pubKey, v }; +} + +// txTest(); +// async function txTest() { +// const web3 = new Web3(new Web3.providers.HttpProvider("https://kovan.infura.io/v3/")); + +// let pubKey = await getPublicKey(keyId); +// let ethAddr = getEthereumAddress((pubKey.PublicKey as Buffer)); +// let ethAddrHash = ethutil.keccak(Buffer.from(ethAddr)); +// let sig = await findEthereumSig(ethAddrHash); +// let recoveredPubAddr = findRightKey(ethAddrHash, sig.r, sig.s, ethAddr); + +// const txParams: TxData = { +// nonce: await web3.eth.getTransactionCount(ethAddr), +// gasPrice: '0x0918400000', +// gasLimit: 160000, +// to: '0x0000000000000000000000000000000000000000', +// value: '0x00', +// data: '0x00', +// r: sig.r.toBuffer(), +// s: sig.s.toBuffer(), +// v: recoveredPubAddr.v +// } + +// console.log(txParams); + +// const tx = new Transaction(txParams, { +// chain: 'kovan', +// }); + +// let txHash = tx.hash(false); +// sig = await findEthereumSig(txHash); +// recoveredPubAddr = findRightKey(txHash, sig.r, sig.s, ethAddr); +// tx.r = sig.r.toBuffer(); +// tx.s = sig.s.toBuffer(); +// tx.v = new BN(recoveredPubAddr.v).toBuffer(); +// console.log(tx.getSenderAddress().toString('hex')); + +// // Send signed tx to ethereum network +// const serializedTx = tx.serialize().toString('hex'); +// web3.eth.sendSignedTransaction('0x' + serializedTx) +// .on('confirmation', (confirmationNumber : number, receipt : TransactionReceipt) => {}) +// .on('receipt', (txReceipt : TransactionReceipt) => { +// console.log("signAndSendTx txReceipt. Tx Address: " + txReceipt.transactionHash); +// }) +// .on('error', error => console.log(error)); +// } \ No newline at end of file diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/package-lock.json b/protocol/pcp/dlu/eth/contracts/upgrader/package-lock.json new file mode 100644 index 00000000..46567a64 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/package-lock.json @@ -0,0 +1,4057 @@ +{ + "name": "upgrader", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "upgrader", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@aws-sdk/client-kms": "^3.658.1", + "@safe-global/api-kit": "^2.4.4", + "asn1.js": "^5.4.1", + "aws-sdk": "^2.1691.0", + "bn.js": "^5.2.1", + "commander": "^12.1.0", + "dotenv": "^16.4.5", + "ethereumjs-tx": "^2.1.2", + "js-sha3": "^0.9.3", + "tsx": "^4.19.1", + "web3": "^4.13.0", + "web3-core": "^4.6.0" + } + }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "license": "MIT" + }, + "node_modules/@aws-crypto/sha256-browser": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-js": "^5.2.0", + "@aws-crypto/supports-web-crypto": "^5.2.0", + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-locate-window": "^3.0.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-crypto/sha256-js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/util": "^5.2.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-crypto/supports-web-crypto": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-crypto/util": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@smithy/util-utf8": "^2.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^2.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-kms": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-kms/-/client-kms-3.658.1.tgz", + "integrity": "sha512-mFlxNx2CQeA6iwvTsNzlPzSwJcjWdhar7xkdQ+VScc0EjUYMVaSmjOPmg38ztU6xeFXeU0wpwbXXNg6SNOLuRA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.658.1", + "@aws-sdk/client-sts": "3.658.1", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/credential-provider-node": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-kms/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.658.1.tgz", + "integrity": "sha512-lOuaBtqPTYGn6xpXlQF4LsNDsQ8Ij2kOdnk+i69Kp6yS76TYvtUuukyLL5kx8zE1c8WbYtxj9y8VNw9/6uKl7Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.658.1.tgz", + "integrity": "sha512-RGcZAI3qEA05JszPKwa0cAyp8rnS1nUvs0Sqw4hqLNQ1kD7b7V6CPjRXe7EFQqCOMvM4kGqx0+cEEVTOmBsFLw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/credential-provider-node": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.658.1" + } + }, + "node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sso/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.658.1.tgz", + "integrity": "sha512-yw9hc5blTnbT1V6mR7Cx9HGc9KQpcLQ1QXj8rntiJi6tIYu3aFNVEyy81JHL7NsuBSeQulJTvHO3y6r3O0sfRg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.658.1", + "@aws-sdk/core": "3.658.1", + "@aws-sdk/credential-provider-node": "3.658.1", + "@aws-sdk/middleware-host-header": "3.654.0", + "@aws-sdk/middleware-logger": "3.654.0", + "@aws-sdk/middleware-recursion-detection": "3.654.0", + "@aws-sdk/middleware-user-agent": "3.654.0", + "@aws-sdk/region-config-resolver": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@aws-sdk/util-user-agent-browser": "3.654.0", + "@aws-sdk/util-user-agent-node": "3.654.0", + "@smithy/config-resolver": "^3.0.8", + "@smithy/core": "^2.4.6", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/hash-node": "^3.0.6", + "@smithy/invalid-dependency": "^3.0.6", + "@smithy/middleware-content-length": "^3.0.8", + "@smithy/middleware-endpoint": "^3.1.3", + "@smithy/middleware-retry": "^3.0.21", + "@smithy/middleware-serde": "^3.0.6", + "@smithy/middleware-stack": "^3.0.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/url-parser": "^3.0.6", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.21", + "@smithy/util-defaults-mode-node": "^3.0.21", + "@smithy/util-endpoints": "^2.1.2", + "@smithy/util-middleware": "^3.0.6", + "@smithy/util-retry": "^3.0.6", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sts/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/core": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.658.1.tgz", + "integrity": "sha512-vJVMoMcSKXK2gBRSu9Ywwv6wQ7tXH8VL1fqB1uVxgCqBZ3IHfqNn4zvpMPWrwgO2/3wv7XFyikGQ5ypPTCw4jA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^2.4.6", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/signature-v4": "^4.1.4", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/util-middleware": "^3.0.6", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.654.0.tgz", + "integrity": "sha512-kogsx3Ql81JouHS7DkheCDU9MYAvK0AokxjcshDveGmf7BbgbWCA8Fnb9wjQyNDaOXNvkZu8Z8rgkX91z324/w==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.658.1.tgz", + "integrity": "sha512-4ubkJjEVCZflxkZnV1JDQv8P2pburxk1LrEp55telfJRzXrnowzBKwuV2ED0QMNC448g2B3VCaffS+Ct7c4IWQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/fetch-http-handler": "^3.2.8", + "@smithy/node-http-handler": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/protocol-http": "^4.1.3", + "@smithy/smithy-client": "^3.3.5", + "@smithy/types": "^3.4.2", + "@smithy/util-stream": "^3.1.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.658.1.tgz", + "integrity": "sha512-2uwOamQg5ppwfegwen1ddPu5HM3/IBSnaGlaKLFhltkdtZ0jiqTZWUtX2V+4Q+buLnT0hQvLS/frQ+7QUam+0Q==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.654.0", + "@aws-sdk/credential-provider-http": "3.658.1", + "@aws-sdk/credential-provider-process": "3.654.0", + "@aws-sdk/credential-provider-sso": "3.658.1", + "@aws-sdk/credential-provider-web-identity": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.658.1" + } + }, + "node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.658.1.tgz", + "integrity": "sha512-XwxW6N+uPXPYAuyq+GfOEdfL/MZGAlCSfB5gEWtLBFmFbikhmEuqfWtI6CD60OwudCUOh6argd21BsJf8o1SJA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.654.0", + "@aws-sdk/credential-provider-http": "3.658.1", + "@aws-sdk/credential-provider-ini": "3.658.1", + "@aws-sdk/credential-provider-process": "3.654.0", + "@aws-sdk/credential-provider-sso": "3.658.1", + "@aws-sdk/credential-provider-web-identity": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/credential-provider-imds": "^3.2.3", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.654.0.tgz", + "integrity": "sha512-PmQoo8sZ9Q2Ow8OMzK++Z9lI7MsRUG7sNq3E72DVA215dhtTICTDQwGlXH2AAmIp7n+G9LLRds+4wo2ehG4mkg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.658.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.658.1.tgz", + "integrity": "sha512-YOagVEsZEk9DmgJEBg+4MBXrPcw/tYas0VQ5OVBqC5XHNbi2OBGJqgmjVPesuu393E7W0VQxtJFDS00O1ewQgA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.658.1", + "@aws-sdk/token-providers": "3.654.0", + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.654.0.tgz", + "integrity": "sha512-6a2g9gMtZToqSu+CusjNK5zvbLJahQ9di7buO3iXgbizXpLXU1rnawCpWxwslMpT5fLgMSKDnKDrr6wdEk7jSw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.654.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.654.0.tgz", + "integrity": "sha512-rxGgVHWKp8U2ubMv+t+vlIk7QYUaRCHaVpmUlJv0Wv6Q0KeO9a42T9FxHphjOTlCGQOLcjCreL9CF8Qhtb4mdQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.654.0.tgz", + "integrity": "sha512-OQYb+nWlmASyXfRb989pwkJ9EVUMP1CrKn2eyTk3usl20JZmKo2Vjis6I0tLUkMSxMhnBJJlQKyWkRpD/u1FVg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.654.0.tgz", + "integrity": "sha512-gKSomgltKVmsT8sC6W7CrADZ4GHwX9epk3GcH6QhebVO3LA9LRbkL3TwOPUXakxxOLLUTYdOZLIOtFf7iH00lg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.654.0.tgz", + "integrity": "sha512-liCcqPAyRsr53cy2tYu4qeH4MMN0eh9g6k56XzI5xd4SghXH5YWh4qOYAlQ8T66ZV4nPMtD8GLtLXGzsH8moFg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@aws-sdk/util-endpoints": "3.654.0", + "@smithy/protocol-http": "^4.1.3", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.654.0.tgz", + "integrity": "sha512-ydGOrXJxj3x0sJhsXyTmvJVLAE0xxuTWFJihTl67RtaO7VRNtd82I3P3bwoMMaDn5WpmV5mPo8fEUDRlBm3fPg==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.6", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.654.0.tgz", + "integrity": "sha512-D8GeJYmvbfWkQDtTB4owmIobSMexZel0fOoetwvgCQ/7L8VPph3Q2bn1TRRIXvH7wdt6DcDxA3tKMHPBkT3GlA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/property-provider": "^3.1.6", + "@smithy/shared-ini-file-loader": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.654.0" + } + }, + "node_modules/@aws-sdk/token-providers/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/types": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.654.0.tgz", + "integrity": "sha512-VWvbED3SV+10QJIcmU/PKjsKilsTV16d1I7/on4bvD/jo1qGeMXqLDBSen3ks/tuvXZF/mFc7ZW/W2DiLVtO7A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/types/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.654.0.tgz", + "integrity": "sha512-i902fcBknHs0Irgdpi62+QMvzxE+bczvILXigYrlHL4+PiEnlMVpni5L5W1qCkNZXf8AaMrSBuR1NZAGp6UOUw==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "@smithy/util-endpoints": "^2.1.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.568.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz", + "integrity": "sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.654.0.tgz", + "integrity": "sha512-ykYAJqvnxLt7wfrqya28wuH3/7NdrwzfiFd7NqEVQf7dXVxL5RPEpD7DxjcyQo3DsHvvdUvGZVaQhozycn1pzA==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/types": "^3.4.2", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.654.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.654.0.tgz", + "integrity": "sha512-a0ojjdBN6pqv6gB4H/QPPSfhs7mFtlVwnmKCM/QrTaFzN0U810PJ1BST3lBx5sa23I5jWHGaoFY+5q65C3clLQ==", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.654.0", + "@smithy/node-config-provider": "^3.1.7", + "@smithy/types": "^3.4.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.23.1.tgz", + "integrity": "sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.23.1.tgz", + "integrity": "sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.23.1.tgz", + "integrity": "sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.23.1.tgz", + "integrity": "sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.23.1.tgz", + "integrity": "sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.23.1.tgz", + "integrity": "sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.23.1.tgz", + "integrity": "sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.23.1.tgz", + "integrity": "sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.23.1.tgz", + "integrity": "sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==", + "cpu": [ + "arm" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.23.1.tgz", + "integrity": "sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.23.1.tgz", + "integrity": "sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.23.1.tgz", + "integrity": "sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==", + "cpu": [ + "loong64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.23.1.tgz", + "integrity": "sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==", + "cpu": [ + "mips64el" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.23.1.tgz", + "integrity": "sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==", + "cpu": [ + "ppc64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.23.1.tgz", + "integrity": "sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==", + "cpu": [ + "riscv64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.23.1.tgz", + "integrity": "sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==", + "cpu": [ + "s390x" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.23.1.tgz", + "integrity": "sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.23.1.tgz", + "integrity": "sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.23.1.tgz", + "integrity": "sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.23.1.tgz", + "integrity": "sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.23.1.tgz", + "integrity": "sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.23.1.tgz", + "integrity": "sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.23.1.tgz", + "integrity": "sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==", + "cpu": [ + "ia32" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.23.1.tgz", + "integrity": "sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.5.0.tgz", + "integrity": "sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==", + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@safe-global/api-kit": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@safe-global/api-kit/-/api-kit-2.4.4.tgz", + "integrity": "sha512-5Px4OZEikamGgmoqIOstMSr6blmJws2yN7LBoCtCqt4RM9Aa9cFp1jZlENvXITSSAFiUhGa3vK8+OAmbhq2nvQ==", + "license": "MIT", + "dependencies": { + "@safe-global/protocol-kit": "^4.0.4", + "@safe-global/safe-core-sdk-types": "^5.0.3", + "ethers": "^6.13.1", + "node-fetch": "^2.7.0" + } + }, + "node_modules/@safe-global/protocol-kit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@safe-global/protocol-kit/-/protocol-kit-4.1.0.tgz", + "integrity": "sha512-WAGXEn6UvKGlEYNqcWUasLZ4240sVWBg8T2SsfHoTs8Im0x2i48CNNZ5Mw9x+oKqhWs/Q9frNG6JcycN19LDRw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.3.3", + "@safe-global/safe-core-sdk-types": "^5.1.0", + "@safe-global/safe-deployments": "^1.37.3", + "@safe-global/safe-modules-deployments": "^2.2.1", + "abitype": "^1.0.2", + "ethereumjs-util": "^7.1.5", + "ethers": "^6.13.1", + "semver": "^7.6.2" + } + }, + "node_modules/@safe-global/safe-core-sdk-types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@safe-global/safe-core-sdk-types/-/safe-core-sdk-types-5.1.0.tgz", + "integrity": "sha512-UzXR4zWmVzux25FcIm4H049QhZZpVpIBL5HE+V0p5gHpArZROL+t24fZmsKUf403CtBxIJM5zZSVQL0nFJi+IQ==", + "license": "MIT", + "dependencies": { + "abitype": "^1.0.2" + } + }, + "node_modules/@safe-global/safe-deployments": { + "version": "1.37.7", + "resolved": "https://registry.npmjs.org/@safe-global/safe-deployments/-/safe-deployments-1.37.7.tgz", + "integrity": "sha512-vbmkWJoJsZ3btMl7PBMUIO/LGsQj4kB29zAuTMOLgb7GmN6avhqPcHKOIjbEKXisxvkVeUYZJWqCiKbZxnvGVA==", + "license": "MIT", + "dependencies": { + "semver": "^7.6.2" + } + }, + "node_modules/@safe-global/safe-modules-deployments": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@safe-global/safe-modules-deployments/-/safe-modules-deployments-2.2.1.tgz", + "integrity": "sha512-H0XpusyXVcsTuRsQSq0FoBKqRfhZH87/1DrFEmXXPXmI3fJkvxq3KpTaTTqzcqoIe/J+erwVZQUYNfL68EcvAQ==", + "license": "MIT" + }, + "node_modules/@scure/base": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.9.tgz", + "integrity": "sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg==", + "license": "MIT", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip39/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@smithy/abort-controller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.5.tgz", + "integrity": "sha512-DhNPnqTqPoG8aZ5dWkFOgsuY+i0GQ3CI6hMmvCoduNsnU9gUZWZBwGfDQsTTB7NvFPkom1df7jMIJWU90kuXXg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/abort-controller/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/config-resolver": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.9.tgz", + "integrity": "sha512-5d9oBf40qC7n2xUoHmntKLdqsyTMMo/r49+eqSIjJ73eDfEtljAxEhzIQ3bkgXJtR3xiv7YzMT/3FF3ORkjWdg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.8", + "@smithy/types": "^3.5.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.7", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/config-resolver/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/core": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.4.7.tgz", + "integrity": "sha512-goqMjX+IoVEnHZjYuzu8xwoZjoteMiLXsPHuXPBkWsGwu0o9c3nTjqkUlP1Ez/V8E501aOU7CJ3INk8mQcW2gw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-retry": "^3.0.22", + "@smithy/middleware-serde": "^3.0.7", + "@smithy/protocol-http": "^4.1.4", + "@smithy/smithy-client": "^3.3.6", + "@smithy/types": "^3.5.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/core/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.4.tgz", + "integrity": "sha512-S9bb0EIokfYEuar4kEbLta+ivlKCWOCFsLZuilkNy9i0uEUEHSi47IFLPaxqqCl+0ftKmcOTHayY5nQhAuq7+w==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.8", + "@smithy/property-provider": "^3.1.7", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/credential-provider-imds/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/fetch-http-handler": { + "version": "3.2.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.9.tgz", + "integrity": "sha512-hYNVQOqhFQ6vOpenifFME546f0GfJn2OiQ3M0FDmuUu8V/Uiwy2wej7ZXxFBNqdx0R5DZAqWM1l6VRhGz8oE6A==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.1.4", + "@smithy/querystring-builder": "^3.0.7", + "@smithy/types": "^3.5.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/fetch-http-handler/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/hash-node": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.7.tgz", + "integrity": "sha512-SAGHN+QkrwcHFjfWzs/czX94ZEjPJ0CrWJS3M43WswDXVEuP4AVy9gJ3+AF6JQHZD13bojmuf/Ap/ItDeZ+Qfw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/hash-node/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/invalid-dependency": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.7.tgz", + "integrity": "sha512-Bq00GsAhHeYSuZX8Kpu4sbI9agH2BNYnqUmmbTGWOhki9NVsWn2jFr896vvoTMH8KAjNX/ErC/8t5QHuEXG+IA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/invalid-dependency/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/is-array-buffer/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/middleware-content-length": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.9.tgz", + "integrity": "sha512-t97PidoGElF9hTtLCrof32wfWMqC5g2SEJNxaVH3NjlatuNGsdxXRYO/t+RPnxA15RpYiS0f+zG7FuE2DeGgjA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-content-length/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/middleware-endpoint": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.4.tgz", + "integrity": "sha512-/ChcVHekAyzUbyPRI8CzPPLj6y8QRAfJngWcLMgsWxKVzw/RzBV69mSOzJYDD3pRwushA1+5tHtPF8fjmzBnrQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^3.0.7", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", + "@smithy/url-parser": "^3.0.7", + "@smithy/util-middleware": "^3.0.7", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-endpoint/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/middleware-retry": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.22.tgz", + "integrity": "sha512-svEN7O2Tf7BoaBkPzX/8AE2Bv7p16d9/ulFAD1Gmn5g19iMqNk1WIkMxAY7SpB9/tVtUwKx0NaIsBRl88gumZA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.8", + "@smithy/protocol-http": "^4.1.4", + "@smithy/service-error-classification": "^3.0.7", + "@smithy/smithy-client": "^3.3.6", + "@smithy/types": "^3.5.0", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-retry": "^3.0.7", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/middleware-serde": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.7.tgz", + "integrity": "sha512-VytaagsQqtH2OugzVTq4qvjkLNbWehHfGcGr0JLJmlDRrNCeZoWkWsSOw1nhS/4hyUUWF/TLGGml4X/OnEep5g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-serde/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/middleware-stack": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.7.tgz", + "integrity": "sha512-EyTbMCdqS1DoeQsO4gI7z2Gzq1MoRFAeS8GkFYIwbedB7Lp5zlLHJdg+56tllIIG5Hnf9ZWX48YKSHlsKvugGA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-stack/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/node-config-provider": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.8.tgz", + "integrity": "sha512-E0rU0DglpeJn5ge64mk8wTGEXcQwmpUTY5Zr7IzTpDLmHKiIamINERNZYrPQjg58Ck236sEKSwRSHA4CwshU6Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-config-provider/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/node-http-handler": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.2.4.tgz", + "integrity": "sha512-49reY3+JgLMFNm7uTAKBWiKCA6XSvkNp9FqhVmusm2jpVnHORYFeFZ704LShtqWfjZW/nhX+7Iexyb6zQfXYIQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^3.1.5", + "@smithy/protocol-http": "^4.1.4", + "@smithy/querystring-builder": "^3.0.7", + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/node-http-handler/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/property-provider": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.7.tgz", + "integrity": "sha512-QfzLi1GPMisY7bAM5hOUqBdGYnY5S2JAlr201pghksrQv139f8iiiMalXtjczIP5f6owxFn3MINLNUNvUkgtPw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/property-provider/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/protocol-http": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.4.tgz", + "integrity": "sha512-MlWK8eqj0JlpZBnWmjQLqmFp71Ug00P+m72/1xQB3YByXD4zZ+y9N4hYrR0EDmrUCZIkyATWHOXFgtavwGDTzQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/protocol-http/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/querystring-builder": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.7.tgz", + "integrity": "sha512-65RXGZZ20rzqqxTsChdqSpbhA6tdt5IFNgG6o7e1lnPVLCe6TNWQq4rTl4N87hTDD8mV4IxJJnvyE7brbnRkQw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-builder/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/querystring-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.7.tgz", + "integrity": "sha512-Fouw4KJVWqqUVIu1gZW8BH2HakwLz6dvdrAhXeXfeymOBrZw+hcqaWs+cS1AZPVp4nlbeIujYrKA921ZW2WMPA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/querystring-parser/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/service-error-classification": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.7.tgz", + "integrity": "sha512-91PRkTfiBf9hxkIchhRKJfl1rsplRDyBnmyFca3y0Z3x/q0JJN480S83LBd8R6sBCkm2bBbqw2FHp0Mbh+ecSA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.8.tgz", + "integrity": "sha512-0NHdQiSkeGl0ICQKcJQ2lCOKH23Nb0EaAa7RDRId6ZqwXkw4LJyIyZ0t3iusD4bnKYDPLGy2/5e2rfUhrt0Acw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/signature-v4": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.0.tgz", + "integrity": "sha512-LafbclHNKnsorMgUkKm7Tk7oJ7xizsZ1VwqhGKqoCIrXh4fqDDp73fK99HOEEgcsQbtemmeY/BPv0vTVYYUNEQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.7", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/signature-v4/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/smithy-client": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.3.6.tgz", + "integrity": "sha512-qdH+mvDHgq1ss6mocyIl2/VjlWXew7pGwZQydwYJczEc22HZyX3k8yVPV9aZsbYbssHPvMDRA5rfBDrjQUbIIw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.4", + "@smithy/middleware-stack": "^3.0.7", + "@smithy/protocol-http": "^4.1.4", + "@smithy/types": "^3.5.0", + "@smithy/util-stream": "^3.1.9", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/smithy-client/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/types": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.5.0.tgz", + "integrity": "sha512-QN0twHNfe8mNJdH9unwsCK13GURU7oEAZqkBI+rsvpv1jrmserO+WnLE7jidR9W/1dxwZ0u/CB01mV2Gms/K2Q==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/types/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/url-parser": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.7.tgz", + "integrity": "sha512-70UbSSR8J97c1rHZOWhl+VKiZDqHWxs/iW8ZHrHp5fCCPLSBE7GcUlUvKSle3Ca+J9LLbYCj/A79BxztBvAfpA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^3.0.7", + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/url-parser/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-base64/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-body-length-browser/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-body-length-node/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-buffer-from/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-config-provider/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.22.tgz", + "integrity": "sha512-WKzUxNsOun5ETwEOrvooXeI1mZ8tjDTOcN4oruELWHhEYDgQYWwxZupURVyovcv+h5DyQT/DzK5nm4ZoR/Tw5Q==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^3.1.7", + "@smithy/smithy-client": "^3.3.6", + "@smithy/types": "^3.5.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.22", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.22.tgz", + "integrity": "sha512-hUsciOmAq8fsGwqg4+pJfNRmrhfqMH4Y9UeGcgeUl88kPAoYANFATJqCND+O4nUvwp5TzsYwGpqpcBKyA8LUUg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^3.0.9", + "@smithy/credential-provider-imds": "^3.2.4", + "@smithy/node-config-provider": "^3.1.8", + "@smithy/property-provider": "^3.1.7", + "@smithy/smithy-client": "^3.3.6", + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-endpoints": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.3.tgz", + "integrity": "sha512-34eACeKov6jZdHqS5hxBMJ4KyWKztTMulhuQ2UdOoP6vVxMLrOKUqIXAwJe/wiWMhXhydLW664B02CNpQBQ4Aw==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.8", + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-endpoints/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-hex-encoding/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-middleware": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.7.tgz", + "integrity": "sha512-OVA6fv/3o7TMJTpTgOi1H5OTwnuUa8hzRzhSFDtZyNxi6OZ70L/FHattSmhE212I7b6WSOJAAmbYnvcjTHOJCA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-middleware/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-retry": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.7.tgz", + "integrity": "sha512-nh1ZO1vTeo2YX1plFPSe/OXaHkLAHza5jpokNiiKX2M5YpNUv6RxGJZhpfmiR4jSvVHCjIDmILjrxKmP+/Ghug==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^3.0.7", + "@smithy/types": "^3.5.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-retry/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-stream": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.9.tgz", + "integrity": "sha512-7YAR0Ub3MwTMjDfjnup4qa6W8gygZMxikBhFMPESi6ASsl/rZJhwLpF/0k9TuezScCojsM0FryGdz4LZtjKPPQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^3.2.9", + "@smithy/node-http-handler": "^3.2.4", + "@smithy/types": "^3.5.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-stream/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-uri-escape/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-utf8/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "license": "0BSD" + }, + "node_modules/@types/bn.js": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", + "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abitype": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.0.6.tgz", + "integrity": "sha512-MMSqYh4+C/aVqI2RQaWqbvI4Kxo5cQV40WQ4QFtDnNzCkqChm8MuENhElmynZlO0qUy/ObkEUaXtKqYnx1Kp3A==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3 >=3.22.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sdk": { + "version": "2.1691.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1691.0.tgz", + "integrity": "sha512-/F2YC+DlsY3UBM2Bdnh5RLHOPNibS/+IcjUuhP8XuctyrN+MlL+fWDAiela32LTDk7hMy4rx8MTgvbJ+0blO5g==", + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "license": "MIT" + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT" + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/elliptic": { + "version": "6.5.7", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz", + "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==", + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/esbuild": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.23.1.tgz", + "integrity": "sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==", + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.23.1", + "@esbuild/android-arm": "0.23.1", + "@esbuild/android-arm64": "0.23.1", + "@esbuild/android-x64": "0.23.1", + "@esbuild/darwin-arm64": "0.23.1", + "@esbuild/darwin-x64": "0.23.1", + "@esbuild/freebsd-arm64": "0.23.1", + "@esbuild/freebsd-x64": "0.23.1", + "@esbuild/linux-arm": "0.23.1", + "@esbuild/linux-arm64": "0.23.1", + "@esbuild/linux-ia32": "0.23.1", + "@esbuild/linux-loong64": "0.23.1", + "@esbuild/linux-mips64el": "0.23.1", + "@esbuild/linux-ppc64": "0.23.1", + "@esbuild/linux-riscv64": "0.23.1", + "@esbuild/linux-s390x": "0.23.1", + "@esbuild/linux-x64": "0.23.1", + "@esbuild/netbsd-x64": "0.23.1", + "@esbuild/openbsd-arm64": "0.23.1", + "@esbuild/openbsd-x64": "0.23.1", + "@esbuild/sunos-x64": "0.23.1", + "@esbuild/win32-arm64": "0.23.1", + "@esbuild/win32-ia32": "0.23.1", + "@esbuild/win32-x64": "0.23.1" + } + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereumjs-common": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.2.tgz", + "integrity": "sha512-hTfZjwGX52GS2jcVO6E2sx4YuFnf0Fhp5ylo4pEPhEffNln7vS59Hr5sLnp3/QCazFLluuBZ+FZ6J5HTp0EqCA==", + "deprecated": "New package name format for new versions: @ethereumjs/common. Please update.", + "license": "MIT" + }, + "node_modules/ethereumjs-tx": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", + "deprecated": "New package name format for new versions: @ethereumjs/tx. Please update.", + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-tx/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-tx/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "license": "MIT" + }, + "node_modules/ethereumjs-tx/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethers": { + "version": "6.13.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.2.tgz", + "integrity": "sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/ethers/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "license": "MIT" + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "license": "MIT" + }, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", + "license": "MIT", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "license": "BSD-3-Clause" + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "license": "MIT", + "peerDependencies": { + "ws": "*" + } + }, + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/js-sha3": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.9.3.tgz", + "integrity": "sha512-BcJPCQeLg6WjEx3FE591wVAevlli8lxsxm9/FzV4HXkV49TmBH38Yvrpce6fjbADGMKFrBMGTqrVz3qPIZ88Gg==", + "license": "MIT" + }, + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "license": "MIT" + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.2.tgz", + "integrity": "sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", + "license": "MIT" + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "license": "ISC" + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "license": "MIT" + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "license": "MIT" + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strnum": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "license": "MIT" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "license": "0BSD" + }, + "node_modules/tsx": { + "version": "4.19.1", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.1.tgz", + "integrity": "sha512-0flMz1lh74BR4wOvBjuh9olbnwqCPc35OOlfyzHba0Dc+QNUeWX/Gq2YTbnwcWPO3BMd8fkzRVrHcsR+a7z7rA==", + "license": "MIT", + "dependencies": { + "esbuild": "~0.23.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "license": "Apache-2.0", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "license": "MIT" + }, + "node_modules/url": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "integrity": "sha512-hzSUW2q06EqL1gKM/a+obYHLIO6ct2hwPuviqTTOcfFVc61UbfJ2Q32+uGL/HCPxKqrdGB5QUwIe7UqlDgwsOQ==", + "license": "MIT", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/web3": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/web3/-/web3-4.13.0.tgz", + "integrity": "sha512-wRXTu/YjelvBJ7PSLzp/rW8/6pqj4RlXzdKSkjk01RaHDvnpLogLU/VL8OF5ygqhY7IzhY5MSrl9SnC8C9Z4uA==", + "license": "LGPL-3.0", + "dependencies": { + "web3-core": "^4.6.0", + "web3-errors": "^1.3.0", + "web3-eth": "^4.9.0", + "web3-eth-abi": "^4.2.4", + "web3-eth-accounts": "^4.2.1", + "web3-eth-contract": "^4.7.0", + "web3-eth-ens": "^4.4.0", + "web3-eth-iban": "^4.0.7", + "web3-eth-personal": "^4.1.0", + "web3-net": "^4.1.0", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-rpc-methods": "^1.3.0", + "web3-rpc-providers": "^1.0.0-rc.2", + "web3-types": "^1.8.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14.0.0", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-core": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-4.6.0.tgz", + "integrity": "sha512-j8uQ/7zSwpmLClMMeZb736Ok3V4cWSd0dnd29jkd10d1pedi32r+hSAgycxSJLLWtPHOzMBIXUjj3TF/IAClVQ==", + "license": "LGPL-3.0", + "dependencies": { + "web3-errors": "^1.3.0", + "web3-eth-accounts": "^4.2.1", + "web3-eth-iban": "^4.0.7", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-types": "^1.8.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + }, + "optionalDependencies": { + "web3-providers-ipc": "^4.0.7" + } + }, + "node_modules/web3-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-errors/-/web3-errors-1.3.0.tgz", + "integrity": "sha512-j5JkAKCtuVMbY3F5PYXBqg1vWrtF4jcyyMY1rlw8a4PV67AkqlepjGgpzWJZd56Mt+TvHy6DA1F/3Id8LatDSQ==", + "license": "LGPL-3.0", + "dependencies": { + "web3-types": "^1.7.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-4.9.0.tgz", + "integrity": "sha512-lE+5rQUkQq1Mzf3uZ/tlay8nvMyC/CmaRFRFQ015OZuvSrRr/byZhhkzY5ZWkIetESTMqfWapu67yeHebcHxwA==", + "license": "LGPL-3.0", + "dependencies": { + "setimmediate": "^1.0.5", + "web3-core": "^4.6.0", + "web3-errors": "^1.3.0", + "web3-eth-abi": "^4.2.4", + "web3-eth-accounts": "^4.2.1", + "web3-net": "^4.1.0", + "web3-providers-ws": "^4.0.8", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.8.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-abi": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-4.2.4.tgz", + "integrity": "sha512-FGoj/ENm/Iq3+6myJyiDCwbFkha9ZCx2fRdiIdw3mp7S4lgu+ay3EVzQPRxJjNBm09UEfxB9yoSAPKj9Z3Mbxg==", + "license": "LGPL-3.0", + "dependencies": { + "abitype": "0.7.1", + "web3-errors": "^1.3.0", + "web3-types": "^1.8.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-abi/node_modules/abitype": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.7.1.tgz", + "integrity": "sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==", + "license": "MIT", + "peerDependencies": { + "typescript": ">=4.9.4", + "zod": "^3 >=3.19.1" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/web3-eth-accounts": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-4.2.1.tgz", + "integrity": "sha512-aOlEZFzqAgKprKs7+DGArU4r9b+ILBjThpeq42aY7LAQcP+mSpsWcQgbIRK3r/n3OwTYZ3aLPk0Ih70O/LwnYA==", + "license": "LGPL-3.0", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "crc-32": "^1.2.2", + "ethereum-cryptography": "^2.0.0", + "web3-errors": "^1.3.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-accounts/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-eth-accounts/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-eth-accounts/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/web3-eth-contract": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-4.7.0.tgz", + "integrity": "sha512-fdStoBOjFyMHwlyJmSUt/BTDL1ATwKGmG3zDXQ/zTKlkkW/F/074ut0Vry4GuwSBg9acMHc0ycOiZx9ZKjNHsw==", + "license": "LGPL-3.0", + "dependencies": { + "@ethereumjs/rlp": "^5.0.2", + "web3-core": "^4.5.1", + "web3-errors": "^1.3.0", + "web3-eth": "^4.8.2", + "web3-eth-abi": "^4.2.3", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-contract/node_modules/@ethereumjs/rlp": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-5.0.2.tgz", + "integrity": "sha512-DziebCdg4JpGlEqEdGgXmjqcFoJi+JGulUXwEjsZGAscAQ7MyD/7LE/GVCP29vEQxKc7AAwjT3A2ywHp2xfoCA==", + "license": "MPL-2.0", + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/web3-eth-ens": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-4.4.0.tgz", + "integrity": "sha512-DeyVIS060hNV9g8dnTx92syqvgbvPricE3MerCxe/DquNZT3tD8aVgFfq65GATtpCgDDJffO2bVeHp3XBemnSQ==", + "license": "LGPL-3.0", + "dependencies": { + "@adraffy/ens-normalize": "^1.8.8", + "web3-core": "^4.5.0", + "web3-errors": "^1.2.0", + "web3-eth": "^4.8.0", + "web3-eth-contract": "^4.5.0", + "web3-net": "^4.1.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-iban": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-4.0.7.tgz", + "integrity": "sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==", + "license": "LGPL-3.0", + "dependencies": { + "web3-errors": "^1.1.3", + "web3-types": "^1.3.0", + "web3-utils": "^4.0.7", + "web3-validator": "^2.0.3" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-eth-personal": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-4.1.0.tgz", + "integrity": "sha512-RFN83uMuvA5cu1zIwwJh9A/bAj0OBxmGN3tgx19OD/9ygeUZbifOL06jgFzN0t+1ekHqm3DXYQM8UfHpXi7yDQ==", + "license": "LGPL-3.0", + "dependencies": { + "web3-core": "^4.6.0", + "web3-eth": "^4.9.0", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.8.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-net": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-4.1.0.tgz", + "integrity": "sha512-WWmfvHVIXWEoBDWdgKNYKN8rAy6SgluZ0abyRyXOL3ESr7ym7pKWbfP4fjApIHlYTh8tNqkrdPfM4Dyi6CA0SA==", + "license": "LGPL-3.0", + "dependencies": { + "web3-core": "^4.4.0", + "web3-rpc-methods": "^1.3.0", + "web3-types": "^1.6.0", + "web3-utils": "^4.3.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-http": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-4.2.0.tgz", + "integrity": "sha512-IPMnDtHB7dVwaB7/mMxAZzyq7d5ezfO1+Vw0bNfAeIi7gaDlJiggp85SdyAfOgov8AMUA/dyiY72kQ0KmjXKvQ==", + "license": "LGPL-3.0", + "dependencies": { + "cross-fetch": "^4.0.0", + "web3-errors": "^1.3.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-ipc": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-4.0.7.tgz", + "integrity": "sha512-YbNqY4zUvIaK2MHr1lQFE53/8t/ejHtJchrWn9zVbFMGXlTsOAbNoIoZWROrg1v+hCBvT2c9z8xt7e/+uz5p1g==", + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "web3-errors": "^1.1.3", + "web3-types": "^1.3.0", + "web3-utils": "^4.0.7" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-providers-ws": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-4.0.8.tgz", + "integrity": "sha512-goJdgata7v4pyzHRsg9fSegUG4gVnHZSHODhNnn6J93ykHkBI1nz4fjlGpcQLUMi4jAMz6SHl9Ibzs2jj9xqPw==", + "license": "LGPL-3.0", + "dependencies": { + "@types/ws": "8.5.3", + "isomorphic-ws": "^5.0.0", + "web3-errors": "^1.2.0", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1", + "ws": "^8.17.1" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-rpc-methods": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/web3-rpc-methods/-/web3-rpc-methods-1.3.0.tgz", + "integrity": "sha512-/CHmzGN+IYgdBOme7PdqzF+FNeMleefzqs0LVOduncSaqsppeOEoskLXb2anSpzmQAP3xZJPaTrkQPWSJMORig==", + "license": "LGPL-3.0", + "dependencies": { + "web3-core": "^4.4.0", + "web3-types": "^1.6.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-rpc-providers": { + "version": "1.0.0-rc.2", + "resolved": "https://registry.npmjs.org/web3-rpc-providers/-/web3-rpc-providers-1.0.0-rc.2.tgz", + "integrity": "sha512-ocFIEXcBx/DYQ90HhVepTBUVnL9pGsZw8wyPb1ZINSenwYus9SvcFkjU1Hfvd/fXjuhAv2bUVch9vxvMx1mXAQ==", + "license": "LGPL-3.0", + "dependencies": { + "web3-errors": "^1.3.0", + "web3-providers-http": "^4.2.0", + "web3-providers-ws": "^4.0.8", + "web3-types": "^1.7.0", + "web3-utils": "^4.3.1", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-types": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/web3-types/-/web3-types-1.8.0.tgz", + "integrity": "sha512-Z51wFLPGhZM/1uDxrxE8gzju3t2aEdRGn+YmLX463id5UjTuMEmP/9in1GFjqrsPB3m86czs8RnGBUt3ovueMw==", + "license": "LGPL-3.0", + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-utils": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-4.3.1.tgz", + "integrity": "sha512-kGwOk8FxOLJ9DQC68yqNQc7AzN+k9YDLaW+ZjlAXs3qORhf8zXk5SxWAAGLbLykMs3vTeB0FTb1Exut4JEYfFA==", + "license": "LGPL-3.0", + "dependencies": { + "ethereum-cryptography": "^2.0.0", + "eventemitter3": "^5.0.1", + "web3-errors": "^1.2.0", + "web3-types": "^1.7.0", + "web3-validator": "^2.0.6" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-utils/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/web3-validator": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/web3-validator/-/web3-validator-2.0.6.tgz", + "integrity": "sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==", + "license": "LGPL-3.0", + "dependencies": { + "ethereum-cryptography": "^2.0.0", + "util": "^0.12.5", + "web3-errors": "^1.2.0", + "web3-types": "^1.6.0", + "zod": "^3.21.4" + }, + "engines": { + "node": ">=14", + "npm": ">=6.12.0" + } + }, + "node_modules/web3-validator/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-validator/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-validator/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } +} diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/package.json b/protocol/pcp/dlu/eth/contracts/upgrader/package.json new file mode 100644 index 00000000..40fb84eb --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/package.json @@ -0,0 +1,26 @@ +{ + "name": "upgrader", + "version": "1.0.0", + "description": "The Upgrader is a script designed to automate the upgrade process for settlement protocol units, streamlining the execution of several key steps required for contract upgrades. Below is a breakdown of its main components and the steps it performs.", + "main": "index.ts", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "@aws-sdk/client-kms": "^3.658.1", + "@safe-global/api-kit": "^2.4.4", + "asn1.js": "^5.4.1", + "aws-sdk": "^2.1691.0", + "bn.js": "^5.2.1", + "commander": "^12.1.0", + "dotenv": "^16.4.5", + "ethereumjs-tx": "^2.1.2", + "js-sha3": "^0.9.3", + "tsx": "^4.19.1", + "web3": "^4.13.0", + "web3-core": "^4.6.0" + } +} diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/propose.sh b/protocol/pcp/dlu/eth/contracts/upgrader/propose.sh new file mode 100644 index 00000000..729d75b0 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/propose.sh @@ -0,0 +1,88 @@ +# propose.sh + +#!/bin/bash + +# Initialize contract variable +contract="" +url="" +api_key="" +path="" + +# Parse options using getopts +while getopts "c:u:k:" opt; do + case $opt in + c) contract="$OPTARG" + ;; + u) url="$OPTARG" + ;; + k) api_key="$OPTARG" + ;; + \?) echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +echo "Contract: $contract" +echo "URL: $url" + +# Ensure the contract flag is provided +if [ -z "$contract" ]; then + echo "Error: -c flag for contract is required." + exit 1 +fi + +# Ensure the url flag is provided +if [ -z "$url" ]; then + echo "Error: -u flag for url is required." + exit 1 +fi + +# Ensure the api_key flag is provided +if [ -z "$api_key" ]; then + echo "Error: -k flag for etherscan api key is required." + exit 1 +fi + +# Make the curl request and store the result in a variable +response=$(curl -s -X POST \ + -H "Content-Type: application/json" \ + --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' \ + $url) + +# Extract the 'result' field using jq and store it in a variable +chain_id_hex=$(echo $response | jq -r '.result') + +# Convert the hex chain ID to decimal +chain_id_dec=$(printf "%d\n" $chain_id_hex) + +if $contract == "PCP" then + path="settlement" +else if $contract == "MovementStaking" then + path="staking" +else if $contract == ["MOVEToken" | "stlMoveToken"] then + path="token" +else + echo "Error: Invalid contract name." + exit 1 +fi + +$env="../src/$path" + +old_version=$(find $env -type f -name "./${contract}V*.sol" | grep -oP 'V\d+' | sed 's/V//' | sort -n | tail -1) +new_version=$((old_version + 1)) + +current_file="${contract}.sol" +new_file="${contract}V${new_version}.sol" +cp "$env/$current_file" "env/$new_file" + +# Run the script to generate transaction data for the upgrade +echo "Generating transaction data to upgrade contract $contract" +forge script "../script/${contract}Deployer.s.sol" -vvvv --fork-url ${url} --broadcast --verify --etherscan-api-key ${api_key} -o ./artifacts/${contract}-v${new_version}-eth-${chain_id_dec} + +# Convert contract name to lowercase +lowercase_contract=$(echo "$contract" | tr '[:upper:]' '[:lower:]') + +# Run the upgrader script +echo "Running upgrader/propose.ts" +npx tsx ./propose.ts -c "$lowercase_contract" -u "$url" diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/propose.ts b/protocol/pcp/dlu/eth/contracts/upgrader/propose.ts new file mode 100644 index 00000000..16532a5b --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/propose.ts @@ -0,0 +1,92 @@ +import Safe from "@safe-global/protocol-kit"; +//@ts-ignore +import SafeApiKit from '@safe-global/api-kit'; +import { + OperationType, + SafeTransactionDataPartial, +} from "@safe-global/safe-core-sdk-types"; +import * as fs from "fs"; +import { Command } from "commander"; +// import dotenv and load from the .env file in the parent directory +import dotenv from "dotenv"; +dotenv.config({ path: "../.env" }); + +interface Config { + CHAIN_ID: bigint; + RPC_URL: string; + SIGNER_ADDRESS_PRIVATE_KEY: string; + SAFE_ADDRESS: string; +} + +async function main() { + const private_key = process.env.AGENT_PRIVATE_KEY; + if (!private_key) { + throw new Error("PRIVATE_KEY is required"); + } + + const program = new Command(); + + program.option("-c, --contract ", "contract name").option("-u, --url ", "rpc url"); + program.parse(process.argv); + + const rawData = fs.readFileSync( + `../script/helpers/upgrade/${program.opts().contract}.json`, + "utf-8" + ); + const jsonData = JSON.parse(rawData); + + const config: Config = { + CHAIN_ID: jsonData.chainId as bigint, + RPC_URL: program.opts().url || "https://sepolia.gateway.tenderly.co", + SIGNER_ADDRESS_PRIVATE_KEY: private_key, + SAFE_ADDRESS: jsonData.safeAddress, + }; + + // Create Safe API Kit instance + const apiKit = new SafeApiKit({ + chainId: config.CHAIN_ID, + }); + + + // Create Safe instance + const protocolKit = await Safe.init({ + provider: config.RPC_URL, + signer: config.SIGNER_ADDRESS_PRIVATE_KEY, + safeAddress: config.SAFE_ADDRESS, + }); + + + // Create transaction + const safeTransactionData: SafeTransactionDataPartial = { + to: jsonData.to, + value: jsonData.value || "0", + data: jsonData.data, + operation: jsonData.operation == "OperationType.Call" ? OperationType.Call : OperationType.DelegateCall, + }; + const safeTransaction = await protocolKit.createTransaction({ + transactions: [safeTransactionData], + }); + + const signerAddress = + (await protocolKit.getSafeProvider().getSignerAddress()) || "0x"; + const safeTxHash = await protocolKit.getTransactionHash(safeTransaction); + const signature = await protocolKit.signHash(safeTxHash); + + // Propose transaction to the service + await apiKit.proposeTransaction({ + safeAddress: config.SAFE_ADDRESS, + safeTransactionData: safeTransaction.data, + safeTxHash, + senderAddress: signerAddress, + senderSignature: signature.data, + }); + + console.log("Proposed a transaction with Safe:", config.SAFE_ADDRESS); + console.log("- safeTxHash:", safeTxHash); + console.log("- Sender:", signerAddress); + console.log("- Sender signature:", signature.data); + + // Should the upgrade/contract.json file be deleted? +} + +main(); diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/safeDeploy.sh b/protocol/pcp/dlu/eth/contracts/upgrader/safeDeploy.sh new file mode 100644 index 00000000..dec2bb11 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/safeDeploy.sh @@ -0,0 +1,85 @@ +# safeDeploy.sh + +#!/bin/bash + +# Initialize contract variable +contract="" +url="" +api_key="" +path="" + +# Parse options using getopts +while getopts "c:u:k:" opt; do + case $opt in + c) contract="$OPTARG" + ;; + u) url="$OPTARG" + ;; + k) api_key="$OPTARG" + ;; + \?) echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +echo "Contract: $contract" +echo "URL: $url" + +# Ensure the contract flag is provided +if [ -z "$contract" ]; then + echo "Error: -c flag for contract is required." + exit 1 +fi + +# Ensure the url flag is provided +if [ -z "$url" ]; then + echo "Error: -u flag for url is required." + exit 1 +fi + +# Ensure the api_key flag is provided +if [ -z "$api_key" ]; then + echo "Error: -k flag for etherscan api key is required." + exit 1 +fi + +# Make the curl request and store the result in a variable +response=$(curl -s -X POST \ + -H "Content-Type: application/json" \ + --data '{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1}' \ + $url) + +# Extract the 'result' field using jq and store it in a variable +chain_id_hex=$(echo $response | jq -r '.result') + +# Convert the hex chain ID to decimal +chain_id_dec=$(printf "%d\n" $chain_id_hex) + +if $contract == "PCP" then + path="settlement" +else if $contract == "MovementStaking" then + path="staking" +else if $contract == ["MOVEToken" | "stlMoveToken"] then + path="token" +else + echo "Error: Invalid contract name." + exit 1 +fi + +$env="../src/$path" + +old_version=$(find $env -type f -name "./${contract}V*.sol" | grep -oP 'V\d+' | sed 's/V//' | sort -n | tail -1) +new_version=$((old_version + 1)) + +current_file="${contract}.sol" +new_file="${contract}V${new_version}.sol" +cp "$env/$current_file" "env/$new_file" + +# Run the script to generate transaction data for the deployment +echo "Generating transaction data to deploy contract $contract" +forge script "../script/${contract}Deployer.s.sol" -vvvv --fork-url ${url} --broadcast --verify --etherscan-api-key ${api_key} -o ./artifacts/${contract}-v${new_version}-eth-${chain_id_dec} + +# Run the deployer script +echo "Running upgrader/safeDeploy.ts" +npx tsx ./safeDeploy.ts -u "$url" diff --git a/protocol/pcp/dlu/eth/contracts/upgrader/safeDeploy.ts b/protocol/pcp/dlu/eth/contracts/upgrader/safeDeploy.ts new file mode 100644 index 00000000..ccb83867 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/upgrader/safeDeploy.ts @@ -0,0 +1,92 @@ +import Safe from "@safe-global/protocol-kit"; +//@ts-ignore +import SafeApiKit from '@safe-global/api-kit'; +import { + OperationType, + SafeTransactionDataPartial, +} from "@safe-global/safe-core-sdk-types"; +import * as fs from "fs"; +import { Command } from "commander"; +// import dotenv and load from the .env file in the parent directory +import dotenv from "dotenv"; +dotenv.config({ path: "../.env" }); + +interface Config { + CHAIN_ID: bigint; + RPC_URL: string; + SIGNER_ADDRESS_PRIVATE_KEY: string; + SAFE_ADDRESS: string; +} + +async function main() { + const private_key = process.env.PRIVATE_KEY; + if (!private_key) { + throw new Error("PRIVATE_KEY is required"); + } + + const program = new Command(); + + program.option("-u, --url ", "rpc url"); + program.parse(process.argv); + + const rawData = fs.readFileSync( + `../script/helpers/upgrade/deploymove.json`, + "utf-8" + ); + const jsonData = JSON.parse(rawData); + + const config: Config = { + CHAIN_ID: jsonData.chainId as bigint, + RPC_URL: program.opts().url || "https://sepolia.gateway.tenderly.co", + SIGNER_ADDRESS_PRIVATE_KEY: private_key, + SAFE_ADDRESS: jsonData.safeAddress, + }; + + // Create Safe API Kit instance + const apiKit = new SafeApiKit({ + chainId: config.CHAIN_ID, + }); + + + // Create Safe instance + const protocolKit = await Safe.init({ + provider: config.RPC_URL, + signer: config.SIGNER_ADDRESS_PRIVATE_KEY, + safeAddress: config.SAFE_ADDRESS, + }); + + + // Create transaction + const safeTransactionData: SafeTransactionDataPartial = { + to: jsonData.to, + value: jsonData.value || "0", + data: jsonData.data, + operation: jsonData.operation == "OperationType.Call" ? OperationType.Call : OperationType.DelegateCall, + }; + const safeTransaction = await protocolKit.createTransaction({ + transactions: [safeTransactionData], + }); + + const signerAddress = + (await protocolKit.getSafeProvider().getSignerAddress()) || "0x"; + const safeTxHash = await protocolKit.getTransactionHash(safeTransaction); + const signature = await protocolKit.signHash(safeTxHash); + + // Propose transaction to the service + await apiKit.proposeTransaction({ + safeAddress: config.SAFE_ADDRESS, + safeTransactionData: safeTransaction.data, + safeTxHash, + senderAddress: signerAddress, + senderSignature: signature.data, + }); + + console.log("Proposed a transaction with Safe:", config.SAFE_ADDRESS); + console.log("- safeTxHash:", safeTxHash); + console.log("- Sender:", signerAddress); + console.log("- Sender signature:", signature.data); + + // Should the upgrade/contract.json file be deleted? +} + +main(); diff --git a/protocol/pcp/dlu/eth/contracts/yarn.lock b/protocol/pcp/dlu/eth/contracts/yarn.lock new file mode 100644 index 00000000..aa543cb8 --- /dev/null +++ b/protocol/pcp/dlu/eth/contracts/yarn.lock @@ -0,0 +1,3988 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@adraffy/ens-normalize@1.10.1": + version "1.10.1" + resolved "https://registry.yarnpkg.com/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz#63430d04bd8c5e74f8d7d049338f1cd9d4f02069" + integrity sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@ethereumjs/rlp@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== + +"@ethereumjs/util@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== + dependencies: + "@ethereumjs/rlp" "^4.0.1" + ethereum-cryptography "^2.0.0" + micro-ftch "^0.3.1" + +"@ethersproject/abi@5.7.0": + version "5.7.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== + dependencies: + "@ethersproject/address" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/keccak256" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + +"@ethersproject/abi@5.8.0", "@ethersproject/abi@^5.0.9", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.8.0.tgz#e79bb51940ac35fe6f3262d7fe2cdb25ad5f07d9" + integrity sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/abstract-provider@5.8.0", "@ethersproject/abstract-provider@^5.7.0", "@ethersproject/abstract-provider@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz#7581f9be601afa1d02b95d26b9d9840926a35b0c" + integrity sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + +"@ethersproject/abstract-signer@5.8.0", "@ethersproject/abstract-signer@^5.7.0", "@ethersproject/abstract-signer@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz#8d7417e95e4094c1797a9762e6789c7356db0754" + integrity sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/address@5.6.1": + version "5.6.1" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.6.1.tgz#ab57818d9aefee919c5721d28cd31fd95eff413d" + integrity sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q== + dependencies: + "@ethersproject/bignumber" "^5.6.2" + "@ethersproject/bytes" "^5.6.1" + "@ethersproject/keccak256" "^5.6.1" + "@ethersproject/logger" "^5.6.0" + "@ethersproject/rlp" "^5.6.1" + +"@ethersproject/address@5.8.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.7.0", "@ethersproject/address@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.8.0.tgz#3007a2c352eee566ad745dca1dbbebdb50a6a983" + integrity sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + +"@ethersproject/base64@5.8.0", "@ethersproject/base64@^5.7.0", "@ethersproject/base64@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.8.0.tgz#61c669c648f6e6aad002c228465d52ac93ee83eb" + integrity sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ== + dependencies: + "@ethersproject/bytes" "^5.8.0" + +"@ethersproject/basex@5.8.0", "@ethersproject/basex@^5.7.0", "@ethersproject/basex@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.8.0.tgz#1d279a90c4be84d1c1139114a1f844869e57d03a" + integrity sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + +"@ethersproject/bignumber@5.8.0", "@ethersproject/bignumber@^5.6.2", "@ethersproject/bignumber@^5.7.0", "@ethersproject/bignumber@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.8.0.tgz#c381d178f9eeb370923d389284efa19f69efa5d7" + integrity sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + bn.js "^5.2.1" + +"@ethersproject/bytes@5.8.0", "@ethersproject/bytes@^5.6.1", "@ethersproject/bytes@^5.7.0", "@ethersproject/bytes@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.8.0.tgz#9074820e1cac7507a34372cadeb035461463be34" + integrity sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/constants@5.8.0", "@ethersproject/constants@^5.7.0", "@ethersproject/constants@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.8.0.tgz#12f31c2f4317b113a4c19de94e50933648c90704" + integrity sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + +"@ethersproject/contracts@5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.8.0.tgz#243a38a2e4aa3e757215ea64e276f8a8c9d8ed73" + integrity sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ== + dependencies: + "@ethersproject/abi" "^5.8.0" + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + +"@ethersproject/hash@5.8.0", "@ethersproject/hash@^5.7.0", "@ethersproject/hash@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.8.0.tgz#b8893d4629b7f8462a90102572f8cd65a0192b4c" + integrity sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/hdnode@5.8.0", "@ethersproject/hdnode@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.8.0.tgz#a51ae2a50bcd48ef6fd108c64cbae5e6ff34a761" + integrity sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/json-wallets@5.8.0", "@ethersproject/json-wallets@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz#d18de0a4cf0f185f232eb3c17d5e0744d97eb8c9" + integrity sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w== + dependencies: + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/pbkdf2" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + aes-js "3.0.0" + scrypt-js "3.0.1" + +"@ethersproject/keccak256@5.8.0", "@ethersproject/keccak256@^5.6.1", "@ethersproject/keccak256@^5.7.0", "@ethersproject/keccak256@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.8.0.tgz#d2123a379567faf2d75d2aaea074ffd4df349e6a" + integrity sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng== + dependencies: + "@ethersproject/bytes" "^5.8.0" + js-sha3 "0.8.0" + +"@ethersproject/logger@5.8.0", "@ethersproject/logger@^5.6.0", "@ethersproject/logger@^5.7.0", "@ethersproject/logger@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.8.0.tgz#f0232968a4f87d29623a0481690a2732662713d6" + integrity sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA== + +"@ethersproject/networks@5.8.0", "@ethersproject/networks@^5.7.0", "@ethersproject/networks@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.8.0.tgz#8b4517a3139380cba9fb00b63ffad0a979671fde" + integrity sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/pbkdf2@5.8.0", "@ethersproject/pbkdf2@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz#cd2621130e5dd51f6a0172e63a6e4a0c0a0ec37e" + integrity sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + +"@ethersproject/properties@5.8.0", "@ethersproject/properties@^5.7.0", "@ethersproject/properties@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.8.0.tgz#405a8affb6311a49a91dabd96aeeae24f477020e" + integrity sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw== + dependencies: + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/providers@5.7.2": + version "5.7.2" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== + dependencies: + "@ethersproject/abstract-provider" "^5.7.0" + "@ethersproject/abstract-signer" "^5.7.0" + "@ethersproject/address" "^5.7.0" + "@ethersproject/base64" "^5.7.0" + "@ethersproject/basex" "^5.7.0" + "@ethersproject/bignumber" "^5.7.0" + "@ethersproject/bytes" "^5.7.0" + "@ethersproject/constants" "^5.7.0" + "@ethersproject/hash" "^5.7.0" + "@ethersproject/logger" "^5.7.0" + "@ethersproject/networks" "^5.7.0" + "@ethersproject/properties" "^5.7.0" + "@ethersproject/random" "^5.7.0" + "@ethersproject/rlp" "^5.7.0" + "@ethersproject/sha2" "^5.7.0" + "@ethersproject/strings" "^5.7.0" + "@ethersproject/transactions" "^5.7.0" + "@ethersproject/web" "^5.7.0" + bech32 "1.1.4" + ws "7.4.6" + +"@ethersproject/providers@5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.8.0.tgz#6c2ae354f7f96ee150439f7de06236928bc04cb4" + integrity sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/base64" "^5.8.0" + "@ethersproject/basex" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/networks" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/web" "^5.8.0" + bech32 "1.1.4" + ws "8.18.0" + +"@ethersproject/random@5.8.0", "@ethersproject/random@^5.7.0", "@ethersproject/random@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.8.0.tgz#1bced04d49449f37c6437c701735a1a022f0057a" + integrity sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/rlp@5.8.0", "@ethersproject/rlp@^5.6.1", "@ethersproject/rlp@^5.7.0", "@ethersproject/rlp@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.8.0.tgz#5a0d49f61bc53e051532a5179472779141451de5" + integrity sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/sha2@5.8.0", "@ethersproject/sha2@^5.7.0", "@ethersproject/sha2@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.8.0.tgz#8954a613bb78dac9b46829c0a95de561ef74e5e1" + integrity sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + hash.js "1.1.7" + +"@ethersproject/signing-key@5.8.0", "@ethersproject/signing-key@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.8.0.tgz#9797e02c717b68239c6349394ea85febf8893119" + integrity sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + bn.js "^5.2.1" + elliptic "6.6.1" + hash.js "1.1.7" + +"@ethersproject/solidity@5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.8.0.tgz#429bb9fcf5521307a9448d7358c26b93695379b9" + integrity sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/sha2" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/strings@5.8.0", "@ethersproject/strings@^5.7.0", "@ethersproject/strings@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.8.0.tgz#ad79fafbf0bd272d9765603215ac74fd7953908f" + integrity sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/transactions@5.8.0", "@ethersproject/transactions@^5.7.0", "@ethersproject/transactions@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.8.0.tgz#1e518822403abc99def5a043d1c6f6fe0007e46b" + integrity sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg== + dependencies: + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/rlp" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + +"@ethersproject/units@5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.8.0.tgz#c12f34ba7c3a2de0e9fa0ed0ee32f3e46c5c2c6a" + integrity sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ== + dependencies: + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/constants" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + +"@ethersproject/wallet@5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.8.0.tgz#49c300d10872e6986d953e8310dc33d440da8127" + integrity sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA== + dependencies: + "@ethersproject/abstract-provider" "^5.8.0" + "@ethersproject/abstract-signer" "^5.8.0" + "@ethersproject/address" "^5.8.0" + "@ethersproject/bignumber" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/hdnode" "^5.8.0" + "@ethersproject/json-wallets" "^5.8.0" + "@ethersproject/keccak256" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/random" "^5.8.0" + "@ethersproject/signing-key" "^5.8.0" + "@ethersproject/transactions" "^5.8.0" + "@ethersproject/wordlists" "^5.8.0" + +"@ethersproject/web@5.8.0", "@ethersproject/web@^5.7.0", "@ethersproject/web@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.8.0.tgz#3e54badc0013b7a801463a7008a87988efce8a37" + integrity sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw== + dependencies: + "@ethersproject/base64" "^5.8.0" + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@ethersproject/wordlists@5.8.0", "@ethersproject/wordlists@^5.8.0": + version "5.8.0" + resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.8.0.tgz#7a5654ee8d1bb1f4dbe43f91d217356d650ad821" + integrity sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg== + dependencies: + "@ethersproject/bytes" "^5.8.0" + "@ethersproject/hash" "^5.8.0" + "@ethersproject/logger" "^5.8.0" + "@ethersproject/properties" "^5.8.0" + "@ethersproject/strings" "^5.8.0" + +"@fastify/busboy@^2.0.0": + version "2.1.1" + resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.1.1.tgz#b9da6a878a371829a0502c9b6c1c143ef6663f4d" + integrity sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA== + +"@jridgewell/resolve-uri@^3.0.3": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/sourcemap-codec@^1.4.10": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" + integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@metamask/eth-sig-util@^4.0.0": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== + dependencies: + ethereumjs-abi "^0.6.8" + ethereumjs-util "^6.2.1" + ethjs-util "^0.1.6" + tweetnacl "^1.0.3" + tweetnacl-util "^0.15.1" + +"@noble/curves@1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.2.0.tgz#92d7e12e4e49b23105a2555c6984d41733d65c35" + integrity sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw== + dependencies: + "@noble/hashes" "1.3.2" + +"@noble/curves@1.4.2", "@noble/curves@~1.4.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== + dependencies: + "@noble/hashes" "1.4.0" + +"@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== + +"@noble/hashes@1.3.2": + version "1.3.2" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.3.2.tgz#6f26dbc8fbc7205873ce3cee2f690eba0d421b39" + integrity sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ== + +"@noble/hashes@1.4.0", "@noble/hashes@~1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== + +"@noble/hashes@^1.4.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.7.1.tgz#5738f6d765710921e7a751e00c20ae091ed8db0f" + integrity sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ== + +"@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": + version "1.7.1" + resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@nomicfoundation/edr-darwin-arm64@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.8.0.tgz#70a23214a2dd2941fcb55e47bb4653514d2dae06" + integrity sha512-sKTmOu/P5YYhxT0ThN2Pe3hmCE/5Ag6K/eYoiavjLWbR7HEb5ZwPu2rC3DpuUk1H+UKJqt7o4/xIgJxqw9wu6A== + +"@nomicfoundation/edr-darwin-x64@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.8.0.tgz#89c11ae510b3ac5c0e5268cd3a6b04194552112f" + integrity sha512-8ymEtWw1xf1Id1cc42XIeE+9wyo3Dpn9OD/X8GiaMz9R70Ebmj2g+FrbETu8o6UM+aL28sBZQCiCzjlft2yWAg== + +"@nomicfoundation/edr-linux-arm64-gnu@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.8.0.tgz#02c1b4f426576af4e464320e340855139a00fe9b" + integrity sha512-h/wWzS2EyQuycz+x/SjMRbyA+QMCCVmotRsgM1WycPARvVZWIVfwRRsKoXKdCftsb3S8NTprqBdJlOmsFyETFA== + +"@nomicfoundation/edr-linux-arm64-musl@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.8.0.tgz#9b432dca973068f16a33abb70260e904494638dd" + integrity sha512-gnWxDgdkka0O9GpPX/gZT3REeKYV28Guyg13+Vj/bbLpmK1HmGh6Kx+fMhWv+Ht/wEmGDBGMCW1wdyT/CftJaQ== + +"@nomicfoundation/edr-linux-x64-gnu@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.8.0.tgz#72954e5fd875df17c43d4ef3fcc381e3312e1347" + integrity sha512-DTMiAkgAx+nyxcxKyxFZk1HPakXXUCgrmei7r5G7kngiggiGp/AUuBBWFHi8xvl2y04GYhro5Wp+KprnLVoAPA== + +"@nomicfoundation/edr-linux-x64-musl@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.8.0.tgz#0d59390c512106010d6f4d94b7fffd99fb7fd8ae" + integrity sha512-iTITWe0Zj8cNqS0xTblmxPbHVWwEtMiDC+Yxwr64d7QBn/1W0ilFQ16J8gB6RVVFU3GpfNyoeg3tUoMpSnrm6Q== + +"@nomicfoundation/edr-win32-x64-msvc@0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.8.0.tgz#d14225c513372fda54684de1229cc793ffe48c12" + integrity sha512-mNRDyd/C3j7RMcwapifzv2K57sfA5xOw8g2U84ZDvgSrXVXLC99ZPxn9kmolb+dz8VMm9FONTZz9ESS6v8DTnA== + +"@nomicfoundation/edr@^0.8.0": + version "0.8.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.8.0.tgz#63441bb24c1804b6d27b075d0d29f3a02d94fc4f" + integrity sha512-dwWRrghSVBQDpt0wP+6RXD8BMz2i/9TI34TcmZqeEAZuCLei3U9KZRgGTKVAM1rMRvrpf5ROfPqrWNetKVUTag== + dependencies: + "@nomicfoundation/edr-darwin-arm64" "0.8.0" + "@nomicfoundation/edr-darwin-x64" "0.8.0" + "@nomicfoundation/edr-linux-arm64-gnu" "0.8.0" + "@nomicfoundation/edr-linux-arm64-musl" "0.8.0" + "@nomicfoundation/edr-linux-x64-gnu" "0.8.0" + "@nomicfoundation/edr-linux-x64-musl" "0.8.0" + "@nomicfoundation/edr-win32-x64-msvc" "0.8.0" + +"@nomicfoundation/ethereumjs-common@4.0.4": + version "4.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz#9901f513af2d4802da87c66d6f255b510bef5acb" + integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg== + dependencies: + "@nomicfoundation/ethereumjs-util" "9.0.4" + +"@nomicfoundation/ethereumjs-rlp@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz#66c95256fc3c909f6fb18f6a586475fc9762fa30" + integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw== + +"@nomicfoundation/ethereumjs-tx@5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz#b0ceb58c98cc34367d40a30d255d6315b2f456da" + integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw== + dependencies: + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/ethereumjs-util@9.0.4": + version "9.0.4" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz#84c5274e82018b154244c877b76bc049a4ed7b38" + integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q== + dependencies: + "@nomicfoundation/ethereumjs-rlp" "5.0.4" + ethereum-cryptography "0.1.3" + +"@nomicfoundation/hardhat-chai-matchers@^2.0.0": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz#9c7cfc4ad0f0a5e9cf16aba8ab668c02f6e273aa" + integrity sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg== + dependencies: + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-ethers@^3.0.0": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz#af078f566373abeb77e11cbe69fe3dd47f8bfc27" + integrity sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA== + dependencies: + debug "^4.1.1" + lodash.isequal "^4.5.0" + +"@nomicfoundation/hardhat-ignition-ethers@^0.15.0": + version "0.15.10" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.10.tgz#a053c3ef90bc2dd8739de7b12a1badf5915e5151" + integrity sha512-P90glRiBbR4mnMKP/LePovfUJjYT2YWJjx7118i7yxssUwcaW9wFohb4bFh+236N1tqM4q7aGx9cBvHNgve3zA== + +"@nomicfoundation/hardhat-ignition@^0.15.10": + version "0.15.10" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.10.tgz#605912ff4a50019685ffba105487c585e28fdde9" + integrity sha512-UScXyLLG5rEm+ANchQYCDOsskdXl6ux3oCPgC24PKE/QMJEib5crGZIo8spAyzdK6vOnRW6i4FG+1qvoO0AGWA== + dependencies: + "@nomicfoundation/ignition-core" "^0.15.10" + "@nomicfoundation/ignition-ui" "^0.15.10" + chalk "^4.0.0" + debug "^4.3.2" + fs-extra "^10.0.0" + json5 "^2.2.3" + prompts "^2.4.2" + +"@nomicfoundation/hardhat-network-helpers@^1.0.0": + version "1.0.12" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.12.tgz#2c0abec0c50b75f9d0d71776e49e3b5ef746d289" + integrity sha512-xTNQNI/9xkHvjmCJnJOTyqDSl8uq1rKb2WOVmixQxFtRd7Oa3ecO8zM0cyC2YmOK+jHB9WPZ+F/ijkHg1CoORA== + dependencies: + ethereumjs-util "^7.1.4" + +"@nomicfoundation/hardhat-toolbox@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz#165b47f8a3d2bf668cc5d453ce7f496a1156948d" + integrity sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ== + +"@nomicfoundation/hardhat-verify@^2.0.0": + version "2.0.13" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.13.tgz#41691adc32e01dc5cf6b725615f64958fba2100b" + integrity sha512-i57GX1sC0kYGyRVnbQrjjyBTpWTKgrvKC+jH8CMKV6gHp959Upb8lKaZ58WRHIU0espkulTxLnacYeUDirwJ2g== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + debug "^4.1.1" + lodash.clonedeep "^4.5.0" + picocolors "^1.1.0" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + +"@nomicfoundation/ignition-core@^0.15.10": + version "0.15.10" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ignition-core/-/ignition-core-0.15.10.tgz#284a986f72a43e93f03773dcbeee3a6dc3e13988" + integrity sha512-AWvCviNlBkPT8EKcg34N+yUdQTYFiC/HdpfFZdw8oMFuAs9SMZE0zQA9gJQSCay41GbuyXt2Kietp5/1/nlBIA== + dependencies: + "@ethersproject/address" "5.6.1" + "@nomicfoundation/solidity-analyzer" "^0.1.1" + cbor "^9.0.0" + debug "^4.3.2" + ethers "^6.7.0" + fs-extra "^10.0.0" + immer "10.0.2" + lodash "4.17.21" + ndjson "2.0.0" + +"@nomicfoundation/ignition-ui@^0.15.10": + version "0.15.10" + resolved "https://registry.yarnpkg.com/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.10.tgz#83b1b29ac95f58c40a8ca6c4c3ae78b9fcd31456" + integrity sha512-82XQPF+1fvxTimDUPgDVwpTjHjfjFgFs84rERbBiMLQbz6sPtgTlV8HHrlbMx8tT/JKCI/SCU4gxV8xA4CPfcg== + +"@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.2.tgz#3a9c3b20d51360b20affb8f753e756d553d49557" + integrity sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw== + +"@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.2.tgz#74dcfabeb4ca373d95bd0d13692f44fcef133c28" + integrity sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw== + +"@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.2.tgz#4af5849a89e5a8f511acc04f28eb5d4460ba2b6a" + integrity sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA== + +"@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.2.tgz#54036808a9a327b2ff84446c130a6687ee702a8e" + integrity sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA== + +"@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.2.tgz#466cda0d6e43691986c944b909fc6dbb8cfc594e" + integrity sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g== + +"@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.2.tgz#2b35826987a6e94444140ac92310baa088ee7f94" + integrity sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg== + +"@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.2.tgz#e6363d13b8709ca66f330562337dbc01ce8bbbd9" + integrity sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA== + +"@nomicfoundation/solidity-analyzer@^0.1.0", "@nomicfoundation/solidity-analyzer@^0.1.1": + version "0.1.2" + resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.2.tgz#8bcea7d300157bf3a770a851d9f5c5e2db34ac55" + integrity sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA== + optionalDependencies: + "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.2" + "@nomicfoundation/solidity-analyzer-darwin-x64" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-arm64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-gnu" "0.1.2" + "@nomicfoundation/solidity-analyzer-linux-x64-musl" "0.1.2" + "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.2" + +"@nomiclabs/hardhat-ethers@^2.2.3": + version "2.2.3" + resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" + integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== + +"@openzeppelin/contracts-upgradeable@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.2.0.tgz#caf9a6eaf4f16d7f90f9b45a6db4e7b125f4b13b" + integrity sha512-mZIu9oa4tQTlGiOJHk6D3LdJlqFqF6oNOSn6S6UVJtzfs9UsY9/dhMEbAVTwElxUtJnjpf6yA062+oBp+eOyPg== + +"@openzeppelin/contracts@^5.0.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@openzeppelin/contracts/-/contracts-5.2.0.tgz#bd020694218202b811b0ea3eec07277814c658da" + integrity sha512-bxjNie5z89W1Ea0NZLZluFh8PrFNn9DH8DQlujEok2yjsOlraUPKID5p1Wk3qdNbf6XkQ1Os2RvfiHrrXLHWKA== + +"@scure/base@~1.1.0", "@scure/base@~1.1.6": + version "1.1.9" + resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.9.tgz#e5e142fbbfe251091f9c5f1dd4c834ac04c3dbd1" + integrity sha512-8YKhl8GHiNI/pU2VMaofa2Tor7PJRAjwQLBBuilkJ9L5+13yVbC7JO/wS7piioAvPSwR3JKM1IJ/u4xQzbcXKg== + +"@scure/bip32@1.1.5": + version "1.1.5" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== + dependencies: + "@noble/hashes" "~1.2.0" + "@noble/secp256k1" "~1.7.0" + "@scure/base" "~1.1.0" + +"@scure/bip32@1.4.0": + version "1.4.0" + resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" + integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== + dependencies: + "@noble/curves" "~1.4.0" + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +"@scure/bip39@1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== + dependencies: + "@noble/hashes" "~1.2.0" + "@scure/base" "~1.1.0" + +"@scure/bip39@1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" + integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== + dependencies: + "@noble/hashes" "~1.4.0" + "@scure/base" "~1.1.6" + +"@sentry/core@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/hub@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== + dependencies: + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/minimal@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@sentry/node@^5.18.1": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== + dependencies: + "@sentry/core" "5.30.0" + "@sentry/hub" "5.30.0" + "@sentry/tracing" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + cookie "^0.4.1" + https-proxy-agent "^5.0.0" + lru_map "^0.3.3" + tslib "^1.9.3" + +"@sentry/tracing@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== + dependencies: + "@sentry/hub" "5.30.0" + "@sentry/minimal" "5.30.0" + "@sentry/types" "5.30.0" + "@sentry/utils" "5.30.0" + tslib "^1.9.3" + +"@sentry/types@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== + +"@sentry/utils@5.30.0": + version "5.30.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== + dependencies: + "@sentry/types" "5.30.0" + tslib "^1.9.3" + +"@solidity-parser/parser@^0.14.0": + version "0.14.5" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.14.5.tgz#87bc3cc7b068e08195c219c91cd8ddff5ef1a804" + integrity sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg== + dependencies: + antlr4ts "^0.5.0-alpha.4" + +"@solidity-parser/parser@^0.19.0": + version "0.19.0" + resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.19.0.tgz#37a8983b2725af9b14ff8c4a475fa0e98d773c3f" + integrity sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@typechain/ethers-v5@^10.0.0": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/ethers-v6@0.5.1": + version "0.5.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz#42fe214a19a8b687086c93189b301e2b878797ea" + integrity sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA== + dependencies: + lodash "^4.17.15" + ts-essentials "^7.0.1" + +"@typechain/hardhat@^9.0.0": + version "9.1.0" + resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-9.1.0.tgz#6985015f01dfb37ef2ca8a29c742d05890351ddc" + integrity sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA== + dependencies: + fs-extra "^9.1.0" + +"@types/bn.js@^4.11.3": + version "4.11.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== + dependencies: + "@types/node" "*" + +"@types/bn.js@^5.1.0": + version "5.1.6" + resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.6.tgz#9ba818eec0c85e4d3c679518428afdf611d03203" + integrity sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w== + dependencies: + "@types/node" "*" + +"@types/chai-as-promised@^7.1.3": + version "7.1.8" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== + dependencies: + "@types/chai" "*" + +"@types/chai@*": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.2.0.tgz#fe62a18d33001800d3590792ceb6126142f814a4" + integrity sha512-FWnQYdrG9FAC8KgPVhDFfrPL1FBsL3NtIt2WsxKvwu/61K6HiuDF3xAb7c7w/k9ML2QOUHcwTgU7dKLFPK6sBg== + dependencies: + "@types/deep-eql" "*" + +"@types/chai@^4.2.0": + version "4.3.20" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.20.tgz#cb291577ed342ca92600430841a00329ba05cecc" + integrity sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ== + +"@types/concat-stream@^1.6.0": + version "1.6.1" + resolved "https://registry.yarnpkg.com/@types/concat-stream/-/concat-stream-1.6.1.tgz#24bcfc101ecf68e886aaedce60dfd74b632a1b74" + integrity sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA== + dependencies: + "@types/node" "*" + +"@types/deep-eql@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/deep-eql/-/deep-eql-4.0.2.tgz#334311971d3a07121e7eb91b684a605e7eea9cbd" + integrity sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw== + +"@types/form-data@0.0.33": + version "0.0.33" + resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-0.0.33.tgz#c9ac85b2a5fd18435b8c85d9ecb50e6d6c893ff8" + integrity sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw== + dependencies: + "@types/node" "*" + +"@types/glob@^7.1.1": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + +"@types/lru-cache@^5.1.0": + version "5.1.1" + resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== + +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + +"@types/mocha@>=9.1.0": + version "10.0.10" + resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-10.0.10.tgz#91f62905e8d23cbd66225312f239454a23bebfa0" + integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q== + +"@types/node@*": + version "22.13.9" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.13.9.tgz#5d9a8f7a975a5bd3ef267352deb96fb13ec02eca" + integrity sha512-acBjXdRJ3A6Pb3tqnw9HZmyR3Fiol3aGxRCK1x3d+6CDAMjl7I649wpSd+yNURCjbOUGu9tqtLKnTGxmK6CyGw== + dependencies: + undici-types "~6.20.0" + +"@types/node@18.15.3": + version "18.15.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.15.3.tgz#f0b991c32cfc6a4e7f3399d6cb4b8cf9a0315014" + integrity sha512-p6ua9zBxz5otCmbpb5D3U4B5Nanw6Pk3PPyX05xnxbB/fRv71N7CPmORg7uAD5P70T0xmx1pzAx/FUfa5X+3cw== + +"@types/node@22.7.5": + version "22.7.5" + resolved "https://registry.yarnpkg.com/@types/node/-/node-22.7.5.tgz#cfde981727a7ab3611a481510b473ae54442b92b" + integrity sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ== + dependencies: + undici-types "~6.19.2" + +"@types/node@^10.0.3": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/node@^8.0.0": + version "8.10.66" + resolved "https://registry.yarnpkg.com/@types/node/-/node-8.10.66.tgz#dd035d409df322acc83dff62a602f12a5783bbb3" + integrity sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw== + +"@types/pbkdf2@^3.0.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.2.tgz#2dc43808e9985a2c69ff02e2d2027bd4fe33e8dc" + integrity sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew== + dependencies: + "@types/node" "*" + +"@types/prettier@^2.1.1": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/qs@^6.2.31": + version "6.9.18" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.18.tgz#877292caa91f7c1b213032b34626505b746624c2" + integrity sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA== + +"@types/secp256k1@^4.0.1": + version "4.0.6" + resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.6.tgz#d60ba2349a51c2cbc5e816dcd831a42029d376bf" + integrity sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ== + dependencies: + "@types/node" "*" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +abbrev@1.0.x: + version "1.0.9" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" + integrity sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^8.11.0, acorn@^8.4.1: + version "8.14.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.14.1.tgz#721d5dc10f7d5b5609a891773d47731796935dfb" + integrity sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg== + +adm-zip@^0.4.16: + version "0.4.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== + +aes-js@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== + +aes-js@4.0.0-beta.5: + version "4.0.0-beta.5" + resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-4.0.0-beta.5.tgz#8d2452c52adedebc3a3e28465d858c11ca315873" + integrity sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^8.0.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +amdefine@>=0.0.4: + version "1.0.1" + resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" + integrity sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg== + +ansi-align@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== + dependencies: + string-width "^4.1.0" + +ansi-colors@^4.1.1, ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +antlr4ts@^0.5.0-alpha.4: + version "0.5.0-alpha.4" + resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-back@^3.0.1, array-back@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1, array-back@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +asap@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" + integrity sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async@1.x: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + +axios@^1.5.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.8.1.tgz#7c118d2146e9ebac512b7d1128771cdd738d11e3" + integrity sha512-NN+fvwH/kV01dYUQ3PTOZns4LWtWhOFCAhQ/pHb88WQ1hNe5V/dvFwc4VJcDL11LT9xSX0QtsR8sWUuyOuOq7g== + dependencies: + follow-redirects "^1.15.6" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-x@^3.0.2: + version "3.0.10" + resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.10.tgz#62de58653f8762b5d6f8d9fe30fa75f7b2585a75" + integrity sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ== + dependencies: + safe-buffer "^5.0.1" + +bech32@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +blakejs@^1.1.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== + +bn.js@4.11.6: + version "4.11.6" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== + +bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: + version "4.12.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.1.tgz#215741fe3c9dba2d7e12c001d0cfdbae43975ba7" + integrity sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg== + +bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== + +boxen@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== + dependencies: + ansi-align "^3.0.0" + camelcase "^6.2.0" + chalk "^4.1.0" + cli-boxes "^2.2.1" + string-width "^4.2.2" + type-fest "^0.20.2" + widest-line "^3.1.0" + wrap-ansi "^7.0.0" + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +brorand@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== + +browser-stdout@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== + +browserify-aes@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== + dependencies: + buffer-xor "^1.0.3" + cipher-base "^1.0.0" + create-hash "^1.1.0" + evp_bytestokey "^1.0.3" + inherits "^2.0.1" + safe-buffer "^5.0.1" + +bs58@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== + dependencies: + base-x "^3.0.2" + +bs58check@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== + dependencies: + bs58 "^4.0.0" + create-hash "^1.1.0" + safe-buffer "^5.1.2" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer-xor@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bound@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +camelcase@^6.0.0, camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caseless@^0.12.0, caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== + dependencies: + nofilter "^3.1.0" + +cbor@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-9.0.2.tgz#536b4f2d544411e70ec2b19a2453f10f83cd9fdb" + integrity sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ== + dependencies: + nofilter "^3.1.0" + +chai-as-promised@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041" + integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== + dependencies: + check-error "^1.0.2" + +chai@^4.2.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.5.0.tgz#707e49923afdd9b13a8b0b47d33d732d13812fd8" + integrity sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.3" + deep-eql "^4.1.3" + get-func-name "^2.0.2" + loupe "^2.3.6" + pathval "^1.1.1" + type-detect "^4.1.0" + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +"charenc@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" + integrity sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA== + +check-error@^1.0.2, check-error@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== + dependencies: + get-func-name "^2.0.2" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +chokidar@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-4.0.3.tgz#7be37a4c03c9aee1ecfe862a4a23b2c70c205d30" + integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA== + dependencies: + readdirp "^4.0.1" + +ci-info@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== + +cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.6.tgz#8fe672437d01cd6c4561af5334e0cc50ff1955f7" + integrity sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw== + dependencies: + inherits "^2.0.4" + safe-buffer "^5.2.1" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-boxes@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== + +cli-table3@^0.5.0: + version "0.5.1" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw== + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +colors@1.4.0, colors@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +command-exists@^1.2.8: + version "1.2.9" + resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== + +command-line-args@^5.1.1: + version "5.2.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== + dependencies: + array-back "^3.1.0" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-usage@^6.1.0: + version "6.1.3" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== + dependencies: + array-back "^4.0.2" + chalk "^2.4.2" + table-layout "^1.0.2" + typical "^5.2.0" + +commander@^8.1.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-8.3.0.tgz#4837ea1b2da67b9c616a67afbb0fafee567bca66" + integrity sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +concat-stream@^1.6.0, concat-stream@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +cookie@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== + dependencies: + cipher-base "^1.0.1" + inherits "^2.0.1" + md5.js "^1.3.4" + ripemd160 "^2.0.1" + sha.js "^2.4.0" + +create-hmac@^1.1.4, create-hmac@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== + dependencies: + cipher-base "^1.0.3" + create-hash "^1.1.0" + inherits "^2.0.1" + ripemd160 "^2.0.0" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +"crypt@>= 0.0.1": + version "0.0.2" + resolved "https://registry.yarnpkg.com/crypt/-/crypt-0.0.2.tgz#88d7ff7ec0dfb86f713dc87bbb42d044d3e6c41b" + integrity sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow== + +death@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/death/-/death-1.1.0.tgz#01aa9c401edd92750514470b8266390c66c67318" + integrity sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w== + +debug@4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.5: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== + dependencies: + ms "^2.1.3" + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +deep-eql@^4.0.1, deep-eql@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== + dependencies: + type-detect "^4.0.0" + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +difflib@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/difflib/-/difflib-0.2.4.tgz#b5e30361a6db023176d562892db85940a718f47e" + integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w== + dependencies: + heap ">= 0.2.0" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +elliptic@6.6.1, elliptic@^6.5.2, elliptic@^6.5.7: + version "6.6.1" + resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.6.1.tgz#3b8ffb02670bf69e382c7f65bf524c97c5405c06" + integrity sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g== + dependencies: + bn.js "^4.11.9" + brorand "^1.1.0" + hash.js "^1.0.0" + hmac-drbg "^1.0.1" + inherits "^2.0.4" + minimalistic-assert "^1.0.1" + minimalistic-crypto-utils "^1.0.1" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +enquirer@^2.3.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== + dependencies: + ansi-colors "^4.1.1" + strip-ansi "^6.0.1" + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +escalade@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@1.8.x: + version "1.8.1" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.8.1.tgz#5a5b53af4693110bebb0867aa3430dd3b70a1018" + integrity sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A== + dependencies: + esprima "^2.7.1" + estraverse "^1.9.1" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.2.0" + +esprima@2.7.x, esprima@^2.7.1: + version "2.7.3" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-2.7.3.tgz#96e3b70d5779f6ad49cd032673d1c312767ba581" + integrity sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A== + +esprima@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^1.9.1: + version "1.9.3" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" + integrity sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +eth-gas-reporter@^0.2.25: + version "0.2.27" + resolved "https://registry.yarnpkg.com/eth-gas-reporter/-/eth-gas-reporter-0.2.27.tgz#928de8548a674ed64c7ba0bf5795e63079150d4e" + integrity sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw== + dependencies: + "@solidity-parser/parser" "^0.14.0" + axios "^1.5.1" + cli-table3 "^0.5.0" + colors "1.4.0" + ethereum-cryptography "^1.0.3" + ethers "^5.7.2" + fs-readdir-recursive "^1.1.0" + lodash "^4.17.14" + markdown-table "^1.1.3" + mocha "^10.2.0" + req-cwd "^2.0.0" + sha1 "^1.1.1" + sync-request "^6.0.0" + +ethereum-bloom-filters@^1.0.6: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz#8294f074c1a6cbd32c39d2cc77ce86ff14797dab" + integrity sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA== + dependencies: + "@noble/hashes" "^1.4.0" + +ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== + dependencies: + "@types/pbkdf2" "^3.0.0" + "@types/secp256k1" "^4.0.1" + blakejs "^1.1.0" + browserify-aes "^1.2.0" + bs58check "^2.1.2" + create-hash "^1.2.0" + create-hmac "^1.1.7" + hash.js "^1.1.7" + keccak "^3.0.0" + pbkdf2 "^3.0.17" + randombytes "^2.1.0" + safe-buffer "^5.1.2" + scrypt-js "^3.0.0" + secp256k1 "^4.0.1" + setimmediate "^1.0.5" + +ethereum-cryptography@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== + dependencies: + "@noble/hashes" "1.2.0" + "@noble/secp256k1" "1.7.1" + "@scure/bip32" "1.1.5" + "@scure/bip39" "1.1.1" + +ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" + integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== + dependencies: + "@noble/curves" "1.4.2" + "@noble/hashes" "1.4.0" + "@scure/bip32" "1.4.0" + "@scure/bip39" "1.3.0" + +ethereumjs-abi@^0.6.8: + version "0.6.8" + resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== + dependencies: + bn.js "^4.11.8" + ethereumjs-util "^6.0.0" + +ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== + dependencies: + "@types/bn.js" "^4.11.3" + bn.js "^4.11.0" + create-hash "^1.1.2" + elliptic "^6.5.2" + ethereum-cryptography "^0.1.3" + ethjs-util "0.1.6" + rlp "^2.2.3" + +ethereumjs-util@^7.1.4: + version "7.1.5" + resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz#9ecf04861e4fbbeed7465ece5f23317ad1129181" + integrity sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg== + dependencies: + "@types/bn.js" "^5.1.0" + bn.js "^5.1.2" + create-hash "^1.1.2" + ethereum-cryptography "^0.1.3" + rlp "^2.2.4" + +ethers@^5.7.2: + version "5.8.0" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.8.0.tgz#97858dc4d4c74afce83ea7562fe9493cedb4d377" + integrity sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg== + dependencies: + "@ethersproject/abi" "5.8.0" + "@ethersproject/abstract-provider" "5.8.0" + "@ethersproject/abstract-signer" "5.8.0" + "@ethersproject/address" "5.8.0" + "@ethersproject/base64" "5.8.0" + "@ethersproject/basex" "5.8.0" + "@ethersproject/bignumber" "5.8.0" + "@ethersproject/bytes" "5.8.0" + "@ethersproject/constants" "5.8.0" + "@ethersproject/contracts" "5.8.0" + "@ethersproject/hash" "5.8.0" + "@ethersproject/hdnode" "5.8.0" + "@ethersproject/json-wallets" "5.8.0" + "@ethersproject/keccak256" "5.8.0" + "@ethersproject/logger" "5.8.0" + "@ethersproject/networks" "5.8.0" + "@ethersproject/pbkdf2" "5.8.0" + "@ethersproject/properties" "5.8.0" + "@ethersproject/providers" "5.8.0" + "@ethersproject/random" "5.8.0" + "@ethersproject/rlp" "5.8.0" + "@ethersproject/sha2" "5.8.0" + "@ethersproject/signing-key" "5.8.0" + "@ethersproject/solidity" "5.8.0" + "@ethersproject/strings" "5.8.0" + "@ethersproject/transactions" "5.8.0" + "@ethersproject/units" "5.8.0" + "@ethersproject/wallet" "5.8.0" + "@ethersproject/web" "5.8.0" + "@ethersproject/wordlists" "5.8.0" + +ethers@^6.0.0, ethers@^6.7.0: + version "6.13.5" + resolved "https://registry.yarnpkg.com/ethers/-/ethers-6.13.5.tgz#8c1d6ac988ac08abc3c1d8fabbd4b8b602851ac4" + integrity sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ== + dependencies: + "@adraffy/ens-normalize" "1.10.1" + "@noble/curves" "1.2.0" + "@noble/hashes" "1.3.2" + "@types/node" "22.7.5" + aes-js "4.0.0-beta.5" + tslib "2.7.0" + ws "8.17.1" + +ethjs-unit@0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== + dependencies: + bn.js "4.11.6" + number-to-bn "1.7.0" + +ethjs-util@0.1.6, ethjs-util@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== + dependencies: + is-hex-prefixed "1.0.0" + strip-hex-prefix "1.0.0" + +evp_bytestokey@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== + dependencies: + md5.js "^1.3.4" + safe-buffer "^5.1.1" + +fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-glob@^3.0.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.8" + +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + +fdir@^6.4.3: + version "6.4.3" + resolved "https://registry.yarnpkg.com/fdir/-/fdir-6.4.3.tgz#011cdacf837eca9b811c89dbb902df714273db72" + integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw== + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +follow-redirects@^1.12.1, follow-redirects@^1.15.6: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +form-data@^2.2.0: + version "2.5.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.3.tgz#f9bcf87418ce748513c0c3494bb48ec270c97acc" + integrity sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + mime-types "^2.1.35" + safe-buffer "^5.2.1" + +form-data@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.2.tgz#35cabbdd30c3ce73deb2c42d3c8d3ed9ca51794c" + integrity sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + mime-types "^2.1.12" + +fp-ts@1.19.3: + version "1.19.3" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== + +fp-ts@^1.0.0: + version "1.19.5" + resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" + integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== + +fs-extra@^10.0.0: + version "10.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^7.0.0, fs-extra@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-extra@^9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-readdir-recursive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz#e32fc030a2ccee44a6b5371308da54be0b397d27" + integrity sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-func-name@^2.0.1, get-func-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== + +get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-port@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/get-port/-/get-port-3.2.0.tgz#dd7ce7de187c06c8bf353796ac71e099f0980ebc" + integrity sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg== + +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +ghost-testrpc@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz#c4de9557b1d1ae7b2d20bbe474a91378ca90ce92" + integrity sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ== + dependencies: + chalk "^2.4.2" + node-emoji "^1.10.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob@7.1.7: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^5.0.15: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA== + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.0, glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globby@^10.0.1: + version "10.0.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-10.0.2.tgz#277593e745acaa4646c3ab411289ec47a0392543" + integrity sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg== + dependencies: + "@types/glob" "^7.1.1" + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.0.3" + glob "^7.1.3" + ignore "^5.1.1" + merge2 "^1.2.3" + slash "^3.0.0" + +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +handlebars@^4.0.1: + version "4.7.8" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.8.tgz#41c42c18b1be2365439188c77c6afae71c0cd9e9" + integrity sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.2" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +hardhat-gas-reporter@^1.0.8: + version "1.0.10" + resolved "https://registry.yarnpkg.com/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.10.tgz#ebe5bda5334b5def312747580cd923c2b09aef1b" + integrity sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA== + dependencies: + array-uniq "1.0.3" + eth-gas-reporter "^0.2.25" + sha1 "^1.1.1" + +hardhat@^2.22.19: + version "2.22.19" + resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.19.tgz#92eb6f59e75b0dded841fecf16260a5e3f6eb4eb" + integrity sha512-jptJR5o6MCgNbhd7eKa3mrteR+Ggq1exmE5RUL5ydQEVKcZm0sss5laa86yZ0ixIavIvF4zzS7TdGDuyopj0sQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@metamask/eth-sig-util" "^4.0.0" + "@nomicfoundation/edr" "^0.8.0" + "@nomicfoundation/ethereumjs-common" "4.0.4" + "@nomicfoundation/ethereumjs-tx" "5.0.4" + "@nomicfoundation/ethereumjs-util" "9.0.4" + "@nomicfoundation/solidity-analyzer" "^0.1.0" + "@sentry/node" "^5.18.1" + "@types/bn.js" "^5.1.0" + "@types/lru-cache" "^5.1.0" + adm-zip "^0.4.16" + aggregate-error "^3.0.0" + ansi-escapes "^4.3.0" + boxen "^5.1.2" + chokidar "^4.0.0" + ci-info "^2.0.0" + debug "^4.1.1" + enquirer "^2.3.0" + env-paths "^2.2.0" + ethereum-cryptography "^1.0.3" + ethereumjs-abi "^0.6.8" + find-up "^5.0.0" + fp-ts "1.19.3" + fs-extra "^7.0.1" + immutable "^4.0.0-rc.12" + io-ts "1.10.4" + json-stream-stringify "^3.1.4" + keccak "^3.0.2" + lodash "^4.17.11" + mnemonist "^0.38.0" + mocha "^10.0.0" + p-map "^4.0.0" + picocolors "^1.1.0" + raw-body "^2.4.1" + resolve "1.17.0" + semver "^6.3.0" + solc "0.8.26" + source-map-support "^0.5.13" + stacktrace-parser "^0.1.10" + tinyglobby "^0.2.6" + tsort "0.0.1" + undici "^5.14.0" + uuid "^8.3.2" + ws "^7.4.6" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA== + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +hash-base@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== + dependencies: + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" + +hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: + version "1.1.7" + resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== + dependencies: + inherits "^2.0.3" + minimalistic-assert "^1.0.1" + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + +"heap@>= 0.2.0": + version "0.2.7" + resolved "https://registry.yarnpkg.com/heap/-/heap-0.2.7.tgz#1e6adf711d3f27ce35a81fe3b7bd576c2260a8fc" + integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg== + +hmac-drbg@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== + dependencies: + hash.js "^1.0.3" + minimalistic-assert "^1.0.0" + minimalistic-crypto-utils "^1.0.1" + +http-basic@^8.1.1: + version "8.1.3" + resolved "https://registry.yarnpkg.com/http-basic/-/http-basic-8.1.3.tgz#a7cabee7526869b9b710136970805b1004261bbf" + integrity sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw== + dependencies: + caseless "^0.12.0" + concat-stream "^1.6.2" + http-response-object "^3.0.1" + parse-cache-control "^1.0.1" + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-response-object@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/http-response-object/-/http-response-object-3.0.2.tgz#7f435bb210454e4360d074ef1f989d5ea8aa9810" + integrity sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA== + dependencies: + "@types/node" "^10.0.3" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^5.1.1: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +immer@10.0.2: + version "10.0.2" + resolved "https://registry.yarnpkg.com/immer/-/immer-10.0.2.tgz#11636c5b77acf529e059582d76faf338beb56141" + integrity sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA== + +immutable@^4.0.0-rc.12: + version "4.3.7" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +interpret@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +io-ts@1.10.4: + version "1.10.4" + resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== + dependencies: + fp-ts "^1.0.0" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.16.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w== + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-hex-prefixed@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +js-sha3@0.8.0, js-sha3@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== + +js-yaml@3.x: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stream-stringify@^3.1.4: + version "3.1.6" + resolved "https://registry.yarnpkg.com/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz#ebe32193876fb99d4ec9f612389a8d8e2b5d54d4" + integrity sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog== + +json-stringify-safe@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonfile@^6.0.1: + version "6.1.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== + dependencies: + universalify "^2.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + +jsonschema@^1.2.4: + version "1.5.0" + resolved "https://registry.yarnpkg.com/jsonschema/-/jsonschema-1.5.0.tgz#f6aceb1ab9123563dd901d05f81f9d4883d3b7d8" + integrity sha512-K+A9hhqbn0f3pJX17Q/7H6yQfD/5OXgdrR5UE12gMXCiN9D5Xq2o5mddV2QEcX/bjla99ASsAAQUyMCCRWAEhw== + +keccak@^3.0.0, keccak@^3.0.2: + version "3.0.4" + resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.4.tgz#edc09b89e633c0549da444432ecf062ffadee86d" + integrity sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q== + dependencies: + node-addon-api "^2.0.0" + node-gyp-build "^4.2.0" + readable-stream "^3.6.0" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + +lodash@4.17.21, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +loupe@^2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== + dependencies: + get-func-name "^2.0.1" + +lru_map@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== + +make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +markdown-table@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-1.1.3.tgz#9fcb69bcfdb8717bfd0398c6ec2d93036ef8de60" + integrity sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q== + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +md5.js@^1.3.4: + version "1.3.5" + resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + safe-buffer "^5.1.2" + +memorystream@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== + +merge2@^1.2.3, merge2@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micro-ftch@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== + +micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12, mime-types@^2.1.35: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimalistic-crypto-utils@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== + +"minimatch@2 || 3", minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.5, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@0.5.x: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +mnemonist@^0.38.0: + version "0.38.5" + resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== + dependencies: + obliterator "^2.0.0" + +mocha@^10.0.0, mocha@^10.2.0: + version "10.8.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + +ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +ndjson@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ndjson/-/ndjson-2.0.0.tgz#320ac86f6fe53f5681897349b86ac6f43bfa3a19" + integrity sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ== + dependencies: + json-stringify-safe "^5.0.1" + minimist "^1.2.5" + readable-stream "^3.6.0" + split2 "^3.0.0" + through2 "^4.0.0" + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +node-addon-api@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== + +node-addon-api@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-5.1.0.tgz#49da1ca055e109a23d537e9de43c09cca21eb762" + integrity sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA== + +node-emoji@^1.10.0: + version "1.11.0" + resolved "https://registry.yarnpkg.com/node-emoji/-/node-emoji-1.11.0.tgz#69a0150e6946e2f115e9d7ea4df7971e2628301c" + integrity sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A== + dependencies: + lodash "^4.17.21" + +node-gyp-build@^4.2.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== + +nopt@3.x: + version "3.0.6" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" + integrity sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg== + dependencies: + abbrev "1" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +number-to-bn@1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== + dependencies: + bn.js "4.11.6" + strip-hex-prefix "1.0.0" + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +obliterator@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.5.tgz#031e0145354b0c18840336ae51d41e7d6d2c76aa" + integrity sha512-42CPE9AhahZRsMNslczq0ctAEtqk8Eka26QofnqC346BZdHDySk3LWka23LI7ULIw11NmltpiLagIq8gBozxTw== + +once@1.x, once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +parse-cache-control@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-cache-control/-/parse-cache-control-1.0.1.tgz#8eeab3e54fa56920fe16ba38f77fa21aacc2d74e" + integrity sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-parse@^1.0.6, path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +pbkdf2@^3.0.17: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== + dependencies: + create-hash "^1.1.2" + create-hmac "^1.1.4" + ripemd160 "^2.0.1" + safe-buffer "^5.0.1" + sha.js "^2.4.8" + +picocolors@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +picomatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" + integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + +prettier@^2.3.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/promise/-/promise-8.3.0.tgz#8cb333d1edeb61ef23869fbb8a4ea0279ab60e0a" + integrity sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg== + dependencies: + asap "~2.0.6" + +prompts@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +proxy-from-env@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + +qs@^6.4.0: + version "6.14.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.14.0.tgz#c63fa40680d2c5c941412a0e899c89af60c0a930" + integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w== + dependencies: + side-channel "^1.1.0" + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +raw-body@^2.4.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +readable-stream@3, readable-stream@^3.0.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-stream@^2.2.2: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readdirp@^4.0.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-4.1.2.tgz#eb85801435fbf2a7ee58f19e0921b068fc69948d" + integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw== + dependencies: + resolve "^1.1.6" + +recursive-readdir@^2.2.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.3.tgz#e726f328c0d69153bcabd5c322d3195252379372" + integrity sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA== + dependencies: + minimatch "^3.0.5" + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +req-cwd@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-cwd/-/req-cwd-2.0.0.tgz#d4082b4d44598036640fb73ddea01ed53db49ebc" + integrity sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ== + dependencies: + req-from "^2.0.0" + +req-from@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/req-from/-/req-from-2.0.0.tgz#d74188e47f93796f4aa71df6ee35ae689f3e0e70" + integrity sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA== + dependencies: + resolve-from "^3.0.0" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +resolve-from@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" + integrity sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw== + +resolve@1.1.x: + version "1.1.7" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" + integrity sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg== + +resolve@1.17.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== + dependencies: + path-parse "^1.0.6" + +resolve@^1.1.6: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +ripemd160@^2.0.0, ripemd160@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== + dependencies: + hash-base "^3.0.0" + inherits "^2.0.1" + +rlp@^2.2.3, rlp@^2.2.4: + version "2.2.7" + resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== + dependencies: + bn.js "^5.2.0" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@^5.2.1, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sc-istanbul@^0.4.5: + version "0.4.6" + resolved "https://registry.yarnpkg.com/sc-istanbul/-/sc-istanbul-0.4.6.tgz#cf6784355ff2076f92d70d59047d71c13703e839" + integrity sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g== + dependencies: + abbrev "1.0.x" + async "1.x" + escodegen "1.8.x" + esprima "2.7.x" + glob "^5.0.15" + handlebars "^4.0.1" + js-yaml "3.x" + mkdirp "0.5.x" + nopt "3.x" + once "1.x" + resolve "1.1.x" + supports-color "^3.1.0" + which "^1.1.1" + wordwrap "^1.0.0" + +scrypt-js@3.0.1, scrypt-js@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== + +secp256k1@^4.0.1: + version "4.0.4" + resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.4.tgz#58f0bfe1830fe777d9ca1ffc7574962a8189f8ab" + integrity sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw== + dependencies: + elliptic "^6.5.7" + node-addon-api "^5.0.0" + node-gyp-build "^4.2.0" + +semver@^5.5.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.3.0: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +semver@^7.3.4: + version "7.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.1.tgz#abd5098d82b18c6c81f6074ff2647fd3e7220c9f" + integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA== + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.8: + version "2.4.11" + resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== + dependencies: + inherits "^2.0.1" + safe-buffer "^5.0.1" + +sha1@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/sha1/-/sha1-1.1.1.tgz#addaa7a93168f393f19eb2b15091618e2700f848" + integrity sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA== + dependencies: + charenc ">= 0.0.1" + crypt ">= 0.0.1" + +shelljs@^0.8.3: + version "0.8.5" + resolved "https://registry.yarnpkg.com/shelljs/-/shelljs-0.8.5.tgz#de055408d8361bed66c669d2f000538ced8ee20c" + integrity sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow== + dependencies: + glob "^7.0.0" + interpret "^1.0.0" + rechoir "^0.6.2" + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +solc@0.8.26: + version "0.8.26" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.8.26.tgz#afc78078953f6ab3e727c338a2fefcd80dd5b01a" + integrity sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g== + dependencies: + command-exists "^1.2.8" + commander "^8.1.0" + follow-redirects "^1.12.1" + js-sha3 "0.8.0" + memorystream "^0.3.1" + semver "^5.5.0" + tmp "0.0.33" + +solidity-coverage@^0.8.1: + version "0.8.14" + resolved "https://registry.yarnpkg.com/solidity-coverage/-/solidity-coverage-0.8.14.tgz#db9bfcc10e3bc369fc074b35b267d665bcc6ae2e" + integrity sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA== + dependencies: + "@ethersproject/abi" "^5.0.9" + "@solidity-parser/parser" "^0.19.0" + chalk "^2.4.2" + death "^1.1.0" + difflib "^0.2.4" + fs-extra "^8.1.0" + ghost-testrpc "^0.0.2" + global-modules "^2.0.0" + globby "^10.0.1" + jsonschema "^1.2.4" + lodash "^4.17.21" + mocha "^10.2.0" + node-emoji "^1.10.0" + pify "^4.0.1" + recursive-readdir "^2.2.2" + sc-istanbul "^0.4.5" + semver "^7.3.4" + shelljs "^0.8.3" + web3-utils "^1.3.6" + +source-map-support@^0.5.13: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map@^0.6.0, source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@~0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.2.0.tgz#dab73fbcfc2ba819b4de03bd6f6eaa48164b3f9d" + integrity sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA== + dependencies: + amdefine ">=0.0.4" + +split2@^3.0.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/split2/-/split2-3.2.2.tgz#bf2cf2a37d838312c249c89206fd7a17dd12365f" + integrity sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg== + dependencies: + readable-stream "^3.0.0" + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +stacktrace-parser@^0.1.10: + version "0.1.11" + resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.11.tgz#c7c08f9b29ef566b9a6f7b255d7db572f66fabc4" + integrity sha512-WjlahMgHmCJpqzU8bIBy4qtsZdU9lRlcZE3Lvyej6t4tuOuv1vk57OW3MBrj6hXBFx/nNoC9MPMTcr5YA7NQbg== + dependencies: + type-fest "^0.7.1" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +string-format@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== + +string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow== + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-hex-prefix@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== + dependencies: + is-hex-prefixed "1.0.0" + +strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^3.1.0: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A== + dependencies: + has-flag "^1.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +sync-request@^6.0.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/sync-request/-/sync-request-6.1.0.tgz#e96217565b5e50bbffe179868ba75532fb597e68" + integrity sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw== + dependencies: + http-response-object "^3.0.1" + sync-rpc "^1.2.1" + then-request "^6.0.0" + +sync-rpc@^1.2.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/sync-rpc/-/sync-rpc-1.3.6.tgz#b2e8b2550a12ccbc71df8644810529deb68665a7" + integrity sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw== + dependencies: + get-port "^3.1.0" + +table-layout@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +table@^6.8.0: + version "6.9.0" + resolved "https://registry.yarnpkg.com/table/-/table-6.9.0.tgz#50040afa6264141c7566b3b81d4d82c47a8668f5" + integrity sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + +then-request@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/then-request/-/then-request-6.0.2.tgz#ec18dd8b5ca43aaee5cb92f7e4c1630e950d4f0c" + integrity sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA== + dependencies: + "@types/concat-stream" "^1.6.0" + "@types/form-data" "0.0.33" + "@types/node" "^8.0.0" + "@types/qs" "^6.2.31" + caseless "~0.12.0" + concat-stream "^1.6.0" + form-data "^2.2.0" + http-basic "^8.1.1" + http-response-object "^3.0.1" + promise "^8.0.0" + qs "^6.4.0" + +through2@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +tinyglobby@^0.2.6: + version "0.2.12" + resolved "https://registry.yarnpkg.com/tinyglobby/-/tinyglobby-0.2.12.tgz#ac941a42e0c5773bd0b5d08f32de82e74a1a61b5" + integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww== + dependencies: + fdir "^6.4.3" + picomatch "^4.0.2" + +tmp@0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +ts-command-line-args@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-usage "^6.1.0" + string-format "^2.0.0" + +ts-essentials@^7.0.1: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== + +ts-node@^10.9.2: + version "10.9.2" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.2.tgz#70f021c9e185bccdca820e26dc413805c101c71f" + integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tslib@2.7.0: + version "2.7.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01" + integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA== + +tslib@^1.9.3: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsort@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== + +tweetnacl-util@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== + +tweetnacl@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg== + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.1.0.tgz#deb2453e8f08dcae7ae98c626b13dddb0155906c" + integrity sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-fest@^0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== + +typechain@8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.2.tgz#1090dd8d9c57b6ef2aed3640a516bdbf01b00d73" + integrity sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q== + dependencies: + "@types/prettier" "^2.1.1" + debug "^4.3.1" + fs-extra "^7.0.0" + glob "7.1.7" + js-sha3 "^0.8.0" + lodash "^4.17.15" + mkdirp "^1.0.4" + prettier "^2.3.1" + ts-command-line-args "^2.2.0" + ts-essentials "^7.0.1" + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== + +typescript@4.9.5: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.19.3" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.19.3.tgz#82315e9bbc6f2b25888858acd1fff8441035b77f" + integrity sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ== + +undici-types@~6.19.2: + version "6.19.8" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" + integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== + +undici-types@~6.20.0: + version "6.20.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.20.0.tgz#8171bf22c1f588d1554d55bf204bc624af388433" + integrity sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg== + +undici@^5.14.0: + version "5.28.5" + resolved "https://registry.yarnpkg.com/undici/-/undici-5.28.5.tgz#b2b94b6bf8f1d919bc5a6f31f2c01deb02e54d4b" + integrity sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA== + dependencies: + "@fastify/busboy" "^2.0.0" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" + integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== + +unpipe@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +utf8@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +web3-utils@^1.3.6: + version "1.10.4" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.4.tgz#0daee7d6841641655d8b3726baf33b08eda1cbec" + integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== + dependencies: + "@ethereumjs/util" "^8.1.0" + bn.js "^5.2.1" + ethereum-bloom-filters "^1.0.6" + ethereum-cryptography "^2.1.2" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + utf8 "3.0.0" + +which@^1.1.1, which@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +widest-line@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== + dependencies: + string-width "^4.0.0" + +word-wrap@~1.2.3: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== + +wordwrapjs@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.2.0" + +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +ws@7.4.6: + version "7.4.6" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== + +ws@8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +ws@8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.0.tgz#0d7505a6eafe2b0e712d232b42279f53bc289bbc" + integrity sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw== + +ws@^7.4.6: + version "7.5.10" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.10.tgz#58b5c20dc281633f6c19113f39b349bd8bd558d9" + integrity sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== diff --git a/protocol/pcp/eth-network-params.yaml b/protocol/pcp/eth-network-params.yaml new file mode 100644 index 00000000..6e01d4ae --- /dev/null +++ b/protocol/pcp/eth-network-params.yaml @@ -0,0 +1,23 @@ +participants: + - el_client_type: geth + cl_client_type: lighthouse + beacon_extra_params: + - "--boot-nodes=enr:-MS4Q..." + - el_client_type: geth + cl_client_type: lodestar + beacon_extra_params: + - "--boot-nodes=enr:-MS4Q..." + - el_client_type: geth + cl_client_type: teku + beacon_extra_params: + - "--boot-nodes=enr:-MS4Q..." + +network_params: + preregistered_validator_keys_mnemonic: "giant issue aisle success illegal bike spike question tent bar rely arctic volcano long crawl hungry vocal artwork sniff fantasy very lucky have athlete" + num_validator_keys_per_node: 64 + network_id: "3151908" + deposit_contract_address: "0x4242424242424242424242424242424242424242" + seconds_per_slot: 12 + genesis_delay: 120 + capella_fork_epoch: 5 + diff --git a/protocol/pcp/runner/Cargo.toml b/protocol/pcp/runner/Cargo.toml new file mode 100644 index 00000000..adc4934e --- /dev/null +++ b/protocol/pcp/runner/Cargo.toml @@ -0,0 +1,32 @@ +[package] +name = "postconfirmationssettlement-runner" +description = "An Anvil runner for the PCP Settlement" +version.workspace = true +edition.workspace = true +license.workspace = true +authors.workspace = true +repository.workspace = true +homepage.workspace = true +publish.workspace = true +rust-version.workspace = true + +[dependencies] +postconfirmationsconfig = { workspace = true } +postconfirmationssettlement-client = { workspace = true } +postconfirmationssettlement-setup = { workspace = true } +dot-movement = { workspace = true } +commander = { workspace = true } + +alloy-primitives = { workspace = true } + +anyhow = { workspace = true } +k256 = { workspace = true } +rand = { workspace = true } +serde_json = { workspace = true } +tokio = { workspace = true } +tracing = { workspace = true } +tracing-subscriber = { workspace = true } +ffs-environment = { workspace = true } + +[lints] +workspace = true diff --git a/protocol/pcp/runner/src/main.rs b/protocol/pcp/runner/src/main.rs new file mode 100644 index 00000000..9f429f65 --- /dev/null +++ b/protocol/pcp/runner/src/main.rs @@ -0,0 +1,41 @@ +use ffs_environment::{backend::config_file::ConfigFile, ffs_environment}; +use pcp_config::Config; +use postconfirmations_settlement_setup::Setup; + +#[tokio::main] +async fn main() -> Result<(), anyhow::Error> { + use tracing_subscriber::EnvFilter; + + tracing_subscriber::fmt() + .with_env_filter( + EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info")), + ) + .init(); + + // get the config file + let dot_movement = dot_movement::DotMovement::try_from_env()?; + let config_file = dot_movement.try_get_or_create_config_file().await?; + + // get a matching ffs_environment object + let ffs_environment: ffs_environment = ffs_environment::new( + ConfigFile::new(config_file), + vec!["postconfirmations_settlement".to_string()], + ); + + // Apply all of the setup steps + let anvil_join_handle = ffs_environment + .try_transaction_with_result(|config| async move { + tracing::info!("Config: {:?}", config); + let config = config.unwrap_or_default(); + tracing::info!("Config: {:?}", config); + + let (config, anvil_join_handle) = Setup::default().setup(&dot_movement, config).await?; + Ok((Some(config), anvil_join_handle)) + }) + .await?; + + // wait for anvil to finish + let _ = anvil_join_handle.await?; + + Ok(()) +} diff --git a/sdk/cli/ffs-client/README.md b/sdk/cli/ffs-client/README.md index 03ee46f4..386ac067 100644 --- a/sdk/cli/ffs-client/README.md +++ b/sdk/cli/ffs-client/README.md @@ -6,3 +6,21 @@ The `ffs-client` relies on the implementation of the following components in eac - `cli/client/` - Command line interface tools for interacting with the protocol - `clients/eth/` - Ethereum client implementation that handles blockchain interactions + +## Commands + +### Some test commands + +Post a commitment using a hex-encoded commitment + +```bash +cargo run --bin ffs-client -- protocol mcr post-commitment --commitment-hex +cargo run --bin ffs-client -- protocol pcp post-commitment --commitment-hex + ``` + +Post a commitment using a preimage string + +```bash +cargo run --bin ffs-client -- protocol mcr post-commitment --preimage-string +cargo run --bin ffs-client -- protocol pcp post-commitment --preimage-string +``` diff --git a/sdk/cli/ffs-client/src/cli/protocol.rs b/sdk/cli/ffs-client/src/cli/protocol.rs index 49947942..dac62d5a 100644 --- a/sdk/cli/ffs-client/src/cli/protocol.rs +++ b/sdk/cli/ffs-client/src/cli/protocol.rs @@ -8,7 +8,6 @@ pub enum Protocol { /// MCR protocol commands #[clap(subcommand)] Mcr(McrProtocolClientSubcommand), - /// PCP protocol commands #[clap(subcommand)] Pcp(PcpProtocolClientSubcommand), diff --git a/util/README.md b/util/README.md index 8a4ba9bf..6df1e608 100644 --- a/util/README.md +++ b/util/README.md @@ -1,2 +1,3 @@ # `util` -The `util` directory collects miscellaneous software utilities maintained by the FFS team. \ No newline at end of file + +The `util` directory collects miscellaneous software utilities maintained by the FFS team.