-
Notifications
You must be signed in to change notification settings - Fork 5
/
DataAvailabilityChallenge.json
1 lines (1 loc) · 290 KB
/
DataAvailabilityChallenge.json
1
{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"receive","stateMutability":"payable"},{"type":"function","name":"balances","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"bondSize","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"challenge","inputs":[{"name":"challengedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"challengedCommitment","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"challengeWindow","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"fixedResolutionCost","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getChallenge","inputs":[{"name":"challengedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"challengedCommitment","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"tuple","internalType":"struct Challenge","components":[{"name":"challenger","type":"address","internalType":"address"},{"name":"lockedBond","type":"uint256","internalType":"uint256"},{"name":"startBlock","type":"uint256","internalType":"uint256"},{"name":"resolvedBlock","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getChallengeStatus","inputs":[{"name":"challengedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"challengedCommitment","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"","type":"uint8","internalType":"enum ChallengeStatus"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_owner","type":"address","internalType":"address"},{"name":"_challengeWindow","type":"uint256","internalType":"uint256"},{"name":"_resolveWindow","type":"uint256","internalType":"uint256"},{"name":"_bondSize","type":"uint256","internalType":"uint256"},{"name":"_resolverRefundPercentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resolve","inputs":[{"name":"challengedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"challengedCommitment","type":"bytes","internalType":"bytes"},{"name":"resolveData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"resolveWindow","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"resolverRefundPercentage","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"setBondSize","inputs":[{"name":"_bondSize","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setResolverRefundPercentage","inputs":[{"name":"_resolverRefundPercentage","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unlockBond","inputs":[{"name":"challengedBlockNumber","type":"uint256","internalType":"uint256"},{"name":"challengedCommitment","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validateCommitment","inputs":[{"name":"commitment","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"variableResolutionCost","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"variableResolutionCostPrecision","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"withdraw","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BalanceChanged","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"},{"name":"balance","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ChallengeStatusChanged","inputs":[{"name":"challengedBlockNumber","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"challengedCommitment","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"status","type":"uint8","indexed":false,"internalType":"enum ChallengeStatus"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RequiredBondSizeChanged","inputs":[{"name":"challengeWindow","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ResolverRefundPercentageChanged","inputs":[{"name":"resolverRefundPercentage","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"BondTooLow","inputs":[{"name":"balance","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ChallengeExists","inputs":[]},{"type":"error","name":"ChallengeNotActive","inputs":[]},{"type":"error","name":"ChallengeNotExpired","inputs":[]},{"type":"error","name":"ChallengeWindowNotOpen","inputs":[]},{"type":"error","name":"InvalidCommitmentLength","inputs":[{"name":"commitmentType","type":"uint8","internalType":"uint8"},{"name":"expectedLength","type":"uint256","internalType":"uint256"},{"name":"actualLength","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInputData","inputs":[{"name":"providedDataCommitment","type":"bytes","internalType":"bytes"},{"name":"expectedCommitment","type":"bytes","internalType":"bytes"}]},{"type":"error","name":"InvalidResolverRefundPercentage","inputs":[{"name":"invalidResolverRefundPercentage","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnknownCommitmentType","inputs":[{"name":"commitmentType","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"WithdrawalFailed","inputs":[]}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200002461dead60008080806200002a565b62000392565b600054610100900460ff16158080156200004b5750600054600160ff909116105b806200007b575062000068306200018c60201b6200100e1760201c565b1580156200007b575060005460ff166001145b620000e45760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801562000108576000805461ff0019166101001790555b620001126200019b565b60658590556066849055620001278362000203565b620001328262000248565b6200013d866200027d565b801562000184576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b6001600160a01b03163b151590565b600054610100900460ff16620001f75760405162461bcd60e51b815260206004820152602b602482015260008051602062001d7783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000db565b62000201620002cf565b565b6200020d62000336565b60678190556040518181527f4468d695a0389e5f9e8ef0c9aee6d84e74cc0d0e0a28c8413badb54697d1bbae9060200160405180910390a150565b6200025262000336565b60648111156200027857604051622d549d60e71b815260048101829052602401620000db565b606855565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600054610100900460ff166200032b5760405162461bcd60e51b815260206004820152602b602482015260008051602062001d7783398151915260448201526a6e697469616c697a696e6760a81b6064820152608401620000db565b62000201336200027d565b6033546001600160a01b03163314620002015760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401620000db565b6119d580620003a26000396000f3fe6080604052600436106101845760003560e01c8063848afb3d116100d6578063956118521161007f578063d7d04e5411610059578063d7d04e5414610459578063f2fde38b14610479578063f92ad2191461049957600080fd5b80639561185214610427578063a03aafbf1461043e578063d0e30db01461045157600080fd5b80638ecb85e1116100b05780638ecb85e1146103d157806393988233146103e757806393fb19441461040757600080fd5b8063848afb3d1461031d578063861a1412146103865780638da5cb5b1461039c57600080fd5b80634ebaf3ce11610138578063715018a611610112578063715018a6146102bb57806379e8a8b3146102d05780637ae929d9146102fd57600080fd5b80634ebaf3ce1461023957806354fd4d501461024f5780637099c581146102a557600080fd5b806327e235e31161016957806327e235e3146101d7578063336409fd146102045780633ccfd60b1461022457600080fd5b806321cf39ee1461019857806323c30f59146101c157600080fd5b36610193576101916104b9565b005b600080fd5b3480156101a457600080fd5b506101ae60665481565b6040519081526020015b60405180910390f35b3480156101cd57600080fd5b506101ae61410081565b3480156101e357600080fd5b506101ae6101f2366004611539565b60696020526000908152604090205481565b34801561021057600080fd5b5061019161021f366004611554565b610527565b34801561023057600080fd5b50610191610577565b34801561024557600080fd5b506101ae6103e881565b34801561025b57600080fd5b506102986040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101b891906115d8565b3480156102b157600080fd5b506101ae60675481565b3480156102c757600080fd5b50610191610611565b3480156102dc57600080fd5b506102f06102eb366004611634565b610625565b6040516101b891906116ea565b34801561030957600080fd5b506101916103183660046116f8565b6106e8565b34801561032957600080fd5b5061033d610338366004611634565b610884565b6040516101b89190815173ffffffffffffffffffffffffffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561039257600080fd5b506101ae60655481565b3480156103a857600080fd5b5060335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b8565b3480156103dd57600080fd5b506101ae60685481565b3480156103f357600080fd5b50610191610402366004611634565b610940565b34801561041357600080fd5b50610191610422366004611772565b610a72565b34801561043357600080fd5b506101ae62011cdd81565b61019161044c366004611634565b610b0f565b6101916104b9565b34801561046557600080fd5b50610191610474366004611554565b610d58565b34801561048557600080fd5b50610191610494366004611539565b610d9b565b3480156104a557600080fd5b506101916104b43660046117b4565b610e52565b33600090815260696020526040812080543492906104d8908490611825565b909155505033600081815260696020908152604091829020548251938452908301527fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a1565b61052f61102a565b6064811115610572576040517f16aa4e80000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b606855565b336000818152606960209081526040808320805490849055815194855291840192909252917fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a160006105d4335a846110ab565b90508061060d576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61061961102a565b61062360006110c1565b565b6000838152606a60205260408082209051829190610646908690869061183d565b9081526040805160209281900383018120608082018352805473ffffffffffffffffffffffffffffffffffffffff16808352600182015494830194909452600281015492820192909252600390910154606082015291506106ab5760009150506106e1565b6060810151156106bf5760029150506106e1565b6106cc8160400151611138565b156106db5760019150506106e1565b60039150505b9392505050565b6106f28484610a72565b60016106ff868686610625565b600381111561071057610710611680565b14610747576040517fbeb11d3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107538585611151565b9050606060ff82166107a15761079e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116992505050565b90505b85856040516107b192919061183d565b60405180910390208180519060200120146107fe578086866040517f1a0bbf9f00000000000000000000000000000000000000000000000000000000815260040161056993929190611896565b6000878152606a6020526040808220905161081c908990899061183d565b908152604051908190036020018120436003820155915088907fc5d8c630ba2fdacb1db24c4599df78c7fb8cf97b5aecde34939597f6697bb1ad90610867908a908a906002906118c6565b60405180910390a261087a81853361119c565b5050505050505050565b6108c56040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6000848152606a60205260409081902090516108e4908590859061183d565b908152604080519182900360209081018320608084018352805473ffffffffffffffffffffffffffffffffffffffff16845260018101549184019190915260028101549183019190915260030154606082015290509392505050565b600361094d848484610625565b600381111561095e5761095e611680565b14610995576040517f151f07fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152606a602052604080822090516109b3908590859061183d565b90815260408051602092819003830190206001810154815473ffffffffffffffffffffffffffffffffffffffff16600090815260699094529183208054919450919290610a01908490611825565b9091555050600060018201819055815473ffffffffffffffffffffffffffffffffffffffff1680825260696020908152604092839020548351928352908201527fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a150505050565b6000610a7e8383611151565b905060ff8116610ad85760218214610ad3576040517ffd9a7e5b000000000000000000000000000000000000000000000000000000008152600060048201526021602482015260448101839052606401610569565b505050565b6040517f81ff071300000000000000000000000000000000000000000000000000000000815260ff82166004820152602401610569565b610b198282610a72565b610b216104b9565b606754336000908152606960205260409020541015610b895733600090815260696020526040908190205460675491517e0155b50000000000000000000000000000000000000000000000000000000081526105699290600401918252602082015260400190565b6000610b96848484610625565b6003811115610ba757610ba7611680565b14610bde576040517f9bb6c64e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610be7836113bc565b610c1d576040517ff9e0d1f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6067543360009081526069602052604081208054909190610c3f9084906118f1565b9250508190555060405180608001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160675481526020014381526020016000815250606a60008581526020019081526020016000208383604051610ca392919061183d565b9081526040805160209281900383018120845181547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161781559284015160018085019190915591840151600284015560609093015160039092019190915584917fc5d8c630ba2fdacb1db24c4599df78c7fb8cf97b5aecde34939597f6697bb1ad91610d4b91869186916118c6565b60405180910390a2505050565b610d6061102a565b60678190556040518181527f4468d695a0389e5f9e8ef0c9aee6d84e74cc0d0e0a28c8413badb54697d1bbae9060200160405180910390a150565b610da361102a565b73ffffffffffffffffffffffffffffffffffffffff8116610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b610e4f816110c1565b50565b600054610100900460ff1615808015610e725750600054600160ff909116105b80610e8c5750303b158015610e8c575060005460ff166001145b610f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f7657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f7e6113d6565b60658590556066849055610f9183610d58565b610f9a82610527565b610fa3866110c1565b801561100657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b600080600080600080868989f195945050505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000606654826111489190611825565b43111592915050565b600061115d8284611908565b60f81c90505b92915050565b80516020918201206040805160009381019390935260218084019290925280518084039092018252604190920190915290565b6001830154835473ffffffffffffffffffffffffffffffffffffffff166000486103e86111cb61410088611950565b6111d5919061198d565b6111e29062011cdd611825565b6111ec9190611950565b90508083111561129e5761120081846118f1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526069602052604081208054909190611235908490611825565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152606960209081526040918290205482519384529083015291935083917fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a15b60006064606854836112b09190611950565b6112ba919061198d565b9050838111156112c75750825b80156113745773ffffffffffffffffffffffffffffffffffffffff851660009081526069602052604081208054839290611302908490611825565b90915550611312905081856118f1565b73ffffffffffffffffffffffffffffffffffffffff8616600081815260696020908152604091829020548251938452908301529195507fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a15b83156113a95760405160009085156108fc0290869083818181858288f193505050501580156113a7573d6000803e3d6000fd5b505b6000876001018190555050505050505050565b600081431015801561116357506065546111489083611825565b600054610100900460ff1661146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610623600054610100900460ff16611507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610623336110c1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461153457600080fd5b919050565b60006020828403121561154b57600080fd5b6106e182611510565b60006020828403121561156657600080fd5b5035919050565b6000815180845260005b8181101561159357602081850181015186830182015201611577565b818111156115a5576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106e1602083018461156d565b60008083601f8401126115fd57600080fd5b50813567ffffffffffffffff81111561161557600080fd5b60208301915083602082850101111561162d57600080fd5b9250929050565b60008060006040848603121561164957600080fd5b83359250602084013567ffffffffffffffff81111561166757600080fd5b611673868287016115eb565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6020810161116382846116af565b60008060008060006060868803121561171057600080fd5b85359450602086013567ffffffffffffffff8082111561172f57600080fd5b61173b89838a016115eb565b9096509450604088013591508082111561175457600080fd5b50611761888289016115eb565b969995985093965092949392505050565b6000806020838503121561178557600080fd5b823567ffffffffffffffff81111561179c57600080fd5b6117a8858286016115eb565b90969095509350505050565b600080600080600060a086880312156117cc57600080fd5b6117d586611510565b97602087013597506040870135966060810135965060800135945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611838576118386117f6565b500190565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006118a9604083018661156d565b82810360208401526118bc81858761184d565b9695505050505050565b6040815260006118da60408301858761184d565b90506118e960208301846116af565b949350505050565b600082821015611903576119036117f6565b500390565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156119485780818660010360031b1b83161692505b505092915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611988576119886117f6565b500290565b6000826119c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c634300080f000a496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069","sourceMap":"1574:19136:101:-:0;;;5796:243;;;;;;;;;-1:-1:-1;5841:191:101::1;5882:6;5921:1;::::0;;;5841:10:::1;:191::i;:::-;1574:19136:::0;;6389:474;3111:19:24;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:24;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;;3220:44;3258:4;3220:29;;;;;:44;;:::i;:::-;3219:45;:66;;;;-1:-1:-1;3268:12:24;;;;;:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:24;;216:2:261;3157:201:24;;;198:21:261;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:261;;;338:44;399:19;;3157:201:24;;;;;;;;;3368:12;:16;;-1:-1:-1;;3368:16:24;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;3428:20:24;;;;;3394:65;6624:16:101::1;:14;:16::i;:::-;6650:15;:34:::0;;;6694:13:::1;:30:::0;;;6734:22:::1;6746:9:::0;6734:11:::1;:22::i;:::-;6766:54;6794:25:::0;6766:27:::1;:54::i;:::-;6830:26;6849:6:::0;6830:18:::1;:26::i;:::-;3483:14:24::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;3513:21:24;;;3553:14;;-1:-1:-1;581:36:261;;3553:14:24;;569:2:261;554:18;3553:14:24;;;;;;;3479:99;3101:483;6389:474:101;;;;;:::o;1186:320:25:-;-1:-1:-1;;;;;1476:19:25;;:23;;;1186:320::o;1003:95:23:-;4910:13:24;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:24;;830:2:261;4902:69:24;;;812:21:261;869:2;849:18;;;842:30;-1:-1:-1;;;;;;;;;;;888:18:261;;;881:62;-1:-1:-1;;;959:18:261;;;952:41;1010:19;;4902:69:24;628:407:261;4902:69:24;1065:26:23::1;:24;:26::i;:::-;1003:95::o:0;6971:143:101:-;1334:13:23;:11;:13::i;:::-;7038:8:101::1;:20:::0;;;7073:34:::1;::::0;1186:25:261;;;7073:34:101::1;::::0;1174:2:261;1159:18;7073:34:101::1;;;;;;;6971:143:::0;:::o;7468:294::-;1334:13:23;:11;:13::i;:::-;7599:3:101::1;7571:25;:31;7567:127;;;7625:58;::::0;-1:-1:-1;;;7625:58:101;;::::1;::::0;::::1;1186:25:261::0;;;1159:18;;7625:58:101::1;1040:177:261::0;7567:127:101::1;7703:24;:52:::0;7468:294::o;2673:187:23:-;2765:6;;;-1:-1:-1;;;;;2781:17:23;;;-1:-1:-1;;;;;;2781:17:23;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;1104:111::-;4910:13:24;;;;;;;4902:69;;;;-1:-1:-1;;;4902:69:24;;830:2:261;4902:69:24;;;812:21:261;869:2;849:18;;;842:30;-1:-1:-1;;;;;;;;;;;888:18:261;;;881:62;-1:-1:-1;;;959:18:261;;;952:41;1010:19;;4902:69:24;628:407:261;4902:69:24;1176:32:23::1;929:10:26::0;1176:18:23::1;:32::i;1599:130::-:0;1513:6;;-1:-1:-1;;;;;1513:6:23;929:10:26;1662:23:23;1654:68;;;;-1:-1:-1;;;1654:68:23;;1424:2:261;1654:68:23;;;1406:21:261;;;1443:18;;;1436:30;1502:34;1482:18;;;1475:62;1554:18;;1654:68:23;1222:356:261;;1574:19136:101;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101845760003560e01c8063848afb3d116100d6578063956118521161007f578063d7d04e5411610059578063d7d04e5414610459578063f2fde38b14610479578063f92ad2191461049957600080fd5b80639561185214610427578063a03aafbf1461043e578063d0e30db01461045157600080fd5b80638ecb85e1116100b05780638ecb85e1146103d157806393988233146103e757806393fb19441461040757600080fd5b8063848afb3d1461031d578063861a1412146103865780638da5cb5b1461039c57600080fd5b80634ebaf3ce11610138578063715018a611610112578063715018a6146102bb57806379e8a8b3146102d05780637ae929d9146102fd57600080fd5b80634ebaf3ce1461023957806354fd4d501461024f5780637099c581146102a557600080fd5b806327e235e31161016957806327e235e3146101d7578063336409fd146102045780633ccfd60b1461022457600080fd5b806321cf39ee1461019857806323c30f59146101c157600080fd5b36610193576101916104b9565b005b600080fd5b3480156101a457600080fd5b506101ae60665481565b6040519081526020015b60405180910390f35b3480156101cd57600080fd5b506101ae61410081565b3480156101e357600080fd5b506101ae6101f2366004611539565b60696020526000908152604090205481565b34801561021057600080fd5b5061019161021f366004611554565b610527565b34801561023057600080fd5b50610191610577565b34801561024557600080fd5b506101ae6103e881565b34801561025b57600080fd5b506102986040518060400160405280600581526020017f312e302e3000000000000000000000000000000000000000000000000000000081525081565b6040516101b891906115d8565b3480156102b157600080fd5b506101ae60675481565b3480156102c757600080fd5b50610191610611565b3480156102dc57600080fd5b506102f06102eb366004611634565b610625565b6040516101b891906116ea565b34801561030957600080fd5b506101916103183660046116f8565b6106e8565b34801561032957600080fd5b5061033d610338366004611634565b610884565b6040516101b89190815173ffffffffffffffffffffffffffffffffffffffff16815260208083015190820152604080830151908201526060918201519181019190915260800190565b34801561039257600080fd5b506101ae60655481565b3480156103a857600080fd5b5060335460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101b8565b3480156103dd57600080fd5b506101ae60685481565b3480156103f357600080fd5b50610191610402366004611634565b610940565b34801561041357600080fd5b50610191610422366004611772565b610a72565b34801561043357600080fd5b506101ae62011cdd81565b61019161044c366004611634565b610b0f565b6101916104b9565b34801561046557600080fd5b50610191610474366004611554565b610d58565b34801561048557600080fd5b50610191610494366004611539565b610d9b565b3480156104a557600080fd5b506101916104b43660046117b4565b610e52565b33600090815260696020526040812080543492906104d8908490611825565b909155505033600081815260696020908152604091829020548251938452908301527fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a1565b61052f61102a565b6064811115610572576040517f16aa4e80000000000000000000000000000000000000000000000000000000008152600481018290526024015b60405180910390fd5b606855565b336000818152606960209081526040808320805490849055815194855291840192909252917fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a160006105d4335a846110ab565b90508061060d576040517f27fcd9d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b61061961102a565b61062360006110c1565b565b6000838152606a60205260408082209051829190610646908690869061183d565b9081526040805160209281900383018120608082018352805473ffffffffffffffffffffffffffffffffffffffff16808352600182015494830194909452600281015492820192909252600390910154606082015291506106ab5760009150506106e1565b6060810151156106bf5760029150506106e1565b6106cc8160400151611138565b156106db5760019150506106e1565b60039150505b9392505050565b6106f28484610a72565b60016106ff868686610625565b600381111561071057610710611680565b14610747576040517fbeb11d3b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006107538585611151565b9050606060ff82166107a15761079e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061116992505050565b90505b85856040516107b192919061183d565b60405180910390208180519060200120146107fe578086866040517f1a0bbf9f00000000000000000000000000000000000000000000000000000000815260040161056993929190611896565b6000878152606a6020526040808220905161081c908990899061183d565b908152604051908190036020018120436003820155915088907fc5d8c630ba2fdacb1db24c4599df78c7fb8cf97b5aecde34939597f6697bb1ad90610867908a908a906002906118c6565b60405180910390a261087a81853361119c565b5050505050505050565b6108c56040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600081525090565b6000848152606a60205260409081902090516108e4908590859061183d565b908152604080519182900360209081018320608084018352805473ffffffffffffffffffffffffffffffffffffffff16845260018101549184019190915260028101549183019190915260030154606082015290509392505050565b600361094d848484610625565b600381111561095e5761095e611680565b14610995576040517f151f07fe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838152606a602052604080822090516109b3908590859061183d565b90815260408051602092819003830190206001810154815473ffffffffffffffffffffffffffffffffffffffff16600090815260699094529183208054919450919290610a01908490611825565b9091555050600060018201819055815473ffffffffffffffffffffffffffffffffffffffff1680825260696020908152604092839020548351928352908201527fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a150505050565b6000610a7e8383611151565b905060ff8116610ad85760218214610ad3576040517ffd9a7e5b000000000000000000000000000000000000000000000000000000008152600060048201526021602482015260448101839052606401610569565b505050565b6040517f81ff071300000000000000000000000000000000000000000000000000000000815260ff82166004820152602401610569565b610b198282610a72565b610b216104b9565b606754336000908152606960205260409020541015610b895733600090815260696020526040908190205460675491517e0155b50000000000000000000000000000000000000000000000000000000081526105699290600401918252602082015260400190565b6000610b96848484610625565b6003811115610ba757610ba7611680565b14610bde576040517f9bb6c64e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610be7836113bc565b610c1d576040517ff9e0d1f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6067543360009081526069602052604081208054909190610c3f9084906118f1565b9250508190555060405180608001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200160675481526020014381526020016000815250606a60008581526020019081526020016000208383604051610ca392919061183d565b9081526040805160209281900383018120845181547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9091161781559284015160018085019190915591840151600284015560609093015160039092019190915584917fc5d8c630ba2fdacb1db24c4599df78c7fb8cf97b5aecde34939597f6697bb1ad91610d4b91869186916118c6565b60405180910390a2505050565b610d6061102a565b60678190556040518181527f4468d695a0389e5f9e8ef0c9aee6d84e74cc0d0e0a28c8413badb54697d1bbae9060200160405180910390a150565b610da361102a565b73ffffffffffffffffffffffffffffffffffffffff8116610e46576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610569565b610e4f816110c1565b50565b600054610100900460ff1615808015610e725750600054600160ff909116105b80610e8c5750303b158015610e8c575060005460ff166001145b610f18576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610569565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f7657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f7e6113d6565b60658590556066849055610f9183610d58565b610f9a82610527565b610fa3866110c1565b801561100657600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b60335473ffffffffffffffffffffffffffffffffffffffff163314610623576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610569565b600080600080600080868989f195945050505050565b6033805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000606654826111489190611825565b43111592915050565b600061115d8284611908565b60f81c90505b92915050565b80516020918201206040805160009381019390935260218084019290925280518084039092018252604190920190915290565b6001830154835473ffffffffffffffffffffffffffffffffffffffff166000486103e86111cb61410088611950565b6111d5919061198d565b6111e29062011cdd611825565b6111ec9190611950565b90508083111561129e5761120081846118f1565b73ffffffffffffffffffffffffffffffffffffffff831660009081526069602052604081208054909190611235908490611825565b909155505073ffffffffffffffffffffffffffffffffffffffff82166000818152606960209081526040918290205482519384529083015291935083917fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a15b60006064606854836112b09190611950565b6112ba919061198d565b9050838111156112c75750825b80156113745773ffffffffffffffffffffffffffffffffffffffff851660009081526069602052604081208054839290611302908490611825565b90915550611312905081856118f1565b73ffffffffffffffffffffffffffffffffffffffff8616600081815260696020908152604091829020548251938452908301529195507fa448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05910160405180910390a15b83156113a95760405160009085156108fc0290869083818181858288f193505050501580156113a7573d6000803e3d6000fd5b505b6000876001018190555050505050505050565b600081431015801561116357506065546111489083611825565b600054610100900460ff1661146d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610623600054610100900460ff16611507576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610569565b610623336110c1565b803573ffffffffffffffffffffffffffffffffffffffff8116811461153457600080fd5b919050565b60006020828403121561154b57600080fd5b6106e182611510565b60006020828403121561156657600080fd5b5035919050565b6000815180845260005b8181101561159357602081850181015186830182015201611577565b818111156115a5576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006106e1602083018461156d565b60008083601f8401126115fd57600080fd5b50813567ffffffffffffffff81111561161557600080fd5b60208301915083602082850101111561162d57600080fd5b9250929050565b60008060006040848603121561164957600080fd5b83359250602084013567ffffffffffffffff81111561166757600080fd5b611673868287016115eb565b9497909650939450505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b600481106116e6577f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b9052565b6020810161116382846116af565b60008060008060006060868803121561171057600080fd5b85359450602086013567ffffffffffffffff8082111561172f57600080fd5b61173b89838a016115eb565b9096509450604088013591508082111561175457600080fd5b50611761888289016115eb565b969995985093965092949392505050565b6000806020838503121561178557600080fd5b823567ffffffffffffffff81111561179c57600080fd5b6117a8858286016115eb565b90969095509350505050565b600080600080600060a086880312156117cc57600080fd5b6117d586611510565b97602087013597506040870135966060810135965060800135945092505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008219821115611838576118386117f6565b500190565b8183823760009101908152919050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6040815260006118a9604083018661156d565b82810360208401526118bc81858761184d565b9695505050505050565b6040815260006118da60408301858761184d565b90506118e960208301846116af565b949350505050565b600082821015611903576119036117f6565b500390565b7fff0000000000000000000000000000000000000000000000000000000000000081358181169160018510156119485780818660010360031b1b83161692505b505092915050565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611988576119886117f6565b500290565b6000826119c3577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c634300080f000a","sourceMap":"1574:19136:101:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7879:9;:7;:9::i;:::-;1574:19136;;;;;4955:28;;;;;;;;;;;;;;;;;;;160:25:261;;;148:2;133:18;4955:28:101;;;;;;;;4571:54;;;;;;;;;;;;4620:5;4571:54;;5361:43;;;;;;;;;;-1:-1:-1;5361:43:101;;;;;:::i;:::-;;;;;;;;;;;;;;7468:294;;;;;;;;;;-1:-1:-1;7468:294:101;;;;;:::i;:::-;;:::i;8177:419::-;;;;;;;;;;;;;:::i;4692:62::-;;;;;;;;;;;;4750:4;4692:62;;4063:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;5047:23::-;;;;;;;;;;;;;;;;2071:101:23;;;;;;;;;;;;;:::i;10566:873:101:-;;;;;;;;;;-1:-1:-1;10566:873:101;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;15428:1683::-;;;;;;;;;;-1:-1:-1;15428:1683:101;;;;;:::i;:::-;;:::i;9979:258::-;;;;;;;;;;-1:-1:-1;9979:258:101;;;;;:::i;:::-;;:::i;:::-;;;;;;4103:13:261;;4118:42;4099:62;4081:81;;4218:4;4206:17;;;4200:24;4178:20;;;4171:54;4281:4;4269:17;;;4263:24;4241:20;;;4234:54;4344:4;4332:17;;;4326:24;4304:20;;;4297:54;;;;4068:3;4053:19;;3878:479;4841:30:101;;;;;;;;;;;;;;;;1441:85:23;;;;;;;;;;-1:-1:-1;1513:6:23;;1441:85;;1513:6;;;;4508:74:261;;4496:2;4481:18;1441:85:23;4362:226:261;5235:39:101;;;;;;;;;;;;;;;;19935:773;;;;;;;;;;-1:-1:-1;19935:773:101;;;;;:::i;:::-;;:::i;12302:448::-;;;;;;;;;;-1:-1:-1;12302:448:101;;;;;:::i;:::-;;:::i;4254:51::-;;;;;;;;;;;;4300:5;4254:51;;13335:1396;;;;;;:::i;:::-;;:::i;7975:147::-;;;:::i;6971:143::-;;;;;;;;;;-1:-1:-1;6971:143:101;;;;;:::i;:::-;;:::i;2321:198:23:-;;;;;;;;;;-1:-1:-1;2321:198:23;;;;;:::i;:::-;;:::i;6389:474:101:-;;;;;;;;;;-1:-1:-1;6389:474:101;;;;;:::i;:::-;;:::i;7975:147::-;8028:10;8019:20;;;;:8;:20;;;;;:33;;8043:9;;8019:20;:33;;8043:9;;8019:33;:::i;:::-;;;;-1:-1:-1;;8082:10:101;8094:20;;;;:8;:20;;;;;;;;;;8067:48;;5968:74:261;;;6058:18;;;6051:34;8067:48:101;;5941:18:261;8067:48:101;;;;;;;7975:147::o;7468:294::-;1334:13:23;:11;:13::i;:::-;7599:3:101::1;7571:25;:31;7567:127;;;7625:58;::::0;::::1;::::0;;::::1;::::0;::::1;160:25:261::0;;;133:18;;7625:58:101::1;;;;;;;;7567:127;7703:24;:52:::0;7468:294::o;8177:419::-;8275:10;8248:15;8266:20;;;:8;:20;;;;;;;;;;8334:24;;;;8373:29;;5968:74:261;;;6058:18;;;6051:34;;;;8266:20:101;8373:29;;5941:18:261;8373:29:101;;;;;;;8456:12;8471:45;8485:10;8497:9;8508:7;8471:13;:45::i;:::-;8456:60;;8531:7;8526:64;;8561:18;;;;;;;;;;;;;;8526:64;8206:390;;8177:419::o;2071:101:23:-;1334:13;:11;:13::i;:::-;2135:30:::1;2162:1;2135:18;:30::i;:::-;2071:101::o:0;10566:873:101:-;10729:15;10790:33;;;:10;:33;;;;;;:55;;10729:15;;10790:33;:55;;10824:20;;;;10790:55;:::i;:::-;;;;;;;;;;;;;;;;10760:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10790:55;-1:-1:-1;10918:77:101;;10966:29;10959:36;;;;;10918:77;11075:24;;;;:29;11071:66;;11113:24;11106:31;;;;;11071:66;11233:41;11252:10;:21;;;11233:18;:41::i;:::-;11229:76;;;11283:22;11276:29;;;;;11229:76;11409:23;11402:30;;;10566:873;;;;;;:::o;15428:1683::-;15653:40;15672:20;;15653:18;:40::i;:::-;15876:22;15809:63;15828:21;15851:20;;15809:18;:63::i;:::-;:89;;;;;;;;:::i;:::-;;15805:147;;15921:20;;;;;;;;;;;;;;15805:147;16035:20;16058:40;16077:20;;16058:18;:40::i;:::-;16035:63;-1:-1:-1;16108:31:101;16153:49;;;16149:140;;16239:39;16266:11;;16239:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16239:26:101;;-1:-1:-1;;;16239:39:101:i;:::-;16218:60;;16149:140;16432:20;;16422:31;;;;;;;:::i;:::-;;;;;;;;16399:18;16389:29;;;;;;:64;16385:160;;16493:18;16513:20;;16476:58;;;;;;;;;;;;;:::i;16385:160::-;16625:33;16661;;;:10;:33;;;;;;:55;;;;16695:20;;;;16661:55;:::i;:::-;;;;;;;;;;;;;;16758:12;16726:29;;;:44;16661:55;-1:-1:-1;16886:21:101;;16863:93;;;;16909:20;;;;16931:24;;16863:93;:::i;:::-;;;;;;;;17040:64;17056:15;17073:11;17093:10;17040:15;:64::i;:::-;15592:1519;;;15428:1683;;;;;:::o;9979:258::-;10136:16;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10136:16:101;10175:33;;;;:10;:33;;;;;;;:55;;;;10209:20;;;;10175:55;:::i;:::-;;;;;;;;;;;;;;;;;10168:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10175:55;-1:-1:-1;9979:258:101;;;;;:::o;19935:773::-;20210:23;20143:63;20162:21;20185:20;;20143:18;:63::i;:::-;:90;;;;;;;;:::i;:::-;;20139:149;;20256:21;;;;;;;;;;;;;;20139:149;20355:34;20392:33;;;:10;:33;;;;;;:55;;;;20426:20;;;;20392:55;:::i;:::-;;;;;;;;;;;;;;;;20498:27;;;;20466;;;;20457:37;;;;:8;:37;;;;;;:68;;20392:55;;-1:-1:-1;20498:27:101;;20457:37;:68;;20498:27;;20457:68;:::i;:::-;;;;-1:-1:-1;;20565:1:101;20535:27;;;:31;;;20634:27;;;;20663:37;;;:8;:37;;;;;;;;;;20619:82;;5968:74:261;;;6058:18;;;6051:34;20619:82:101;;5941:18:261;20619:82:101;;;;;;;20032:676;19935:773;;;:::o;12302:448::-;12379:20;12402:30;12421:10;;12402:18;:30::i;:::-;12379:53;-1:-1:-1;12446:49:101;;;12442:247;;12536:2;12515:23;;12511:148;;12565:79;;;;;12595:24;12565:79;;;7993:36:261;12622:2:101;8045:18:261;;;8038:34;8088:18;;;8081:34;;;7966:18;;12565:79:101;7786:335:261;12511:148:101;12672:7;12302:448;;:::o;12442:247::-;12706:37;;;;;8298:4:261;8286:17;;12706:37:101;;;8268:36:261;8241:18;;12706:37:101;8126:184:261;13335:1396:101;13500:40;13519:20;;13500:18;:40::i;:::-;13610:9;:7;:9::i;:::-;13702:8;;13688:10;13679:20;;;;:8;:20;;;;;;:31;13675:111;;;13753:10;13744:20;;;;:8;:20;;;;;;;;13766:8;;13733:42;;;;;;;13766:8;13733:42;;8489:25:261;;;8545:2;8530:18;;8523:34;8477:2;8462:18;;8315:248;13675:111:101;13927:29;13860:63;13879:21;13902:20;;13860:18;:63::i;:::-;:96;;;;;;;;:::i;:::-;;13856:151;;13979:17;;;;;;;;;;;;;;13856:151;14089:43;14110:21;14089:20;:43::i;:::-;14084:106;;14155:24;;;;;;;;;;;;;;14084:106;14263:8;;14248:10;14239:20;;;;:8;:20;;;;;:32;;:20;;;:32;;14263:8;;14239:32;:::i;:::-;;;;;;;;14439:103;;;;;;;;14463:10;14439:103;;;;;;14487:8;;14439:103;;;;14509:12;14439:103;;;;14538:1;14439:103;;;14369:10;:33;14380:21;14369:33;;;;;;;;;;;14403:20;;14369:55;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;:173;;;;;;;;;;;;;;;;;-1:-1:-1;14369:173:101;;;;;;;;;;;;;;;;;;;;;;;;;;;;14656:21;;14633:91;;;;14679:20;;;;14633:91;:::i;:::-;;;;;;;;13335:1396;;;:::o;6971:143::-;1334:13:23;:11;:13::i;:::-;7038:8:101::1;:20:::0;;;7073:34:::1;::::0;160:25:261;;;7073:34:101::1;::::0;148:2:261;133:18;7073:34:101::1;;;;;;;6971:143:::0;:::o;2321:198:23:-;1334:13;:11;:13::i;:::-;2409:22:::1;::::0;::::1;2401:73;;;::::0;::::1;::::0;;8900:2:261;2401:73:23::1;::::0;::::1;8882:21:261::0;8939:2;8919:18;;;8912:30;8978:34;8958:18;;;8951:62;9049:8;9029:18;;;9022:36;9075:19;;2401:73:23::1;8698:402:261::0;2401:73:23::1;2484:28;2503:8;2484:18;:28::i;:::-;2321:198:::0;:::o;6389:474:101:-;3111:19:24;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:24;;3212:1;3197:12;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:24;1476:19:25;:23;;;3219:66:24;;-1:-1:-1;3268:12:24;;;;;:17;3219:66;3157:201;;;;;;;9307:2:261;3157:201:24;;;9289:21:261;9346:2;9326:18;;;9319:30;9385:34;9365:18;;;9358:62;9456:16;9436:18;;;9429:44;9490:19;;3157:201:24;9105:410:261;3157:201:24;3368:12;:16;;;;3383:1;3368:16;;;3394:65;;;;3428:13;:20;;;;;;;;3394:65;6624:16:101::1;:14;:16::i;:::-;6650:15;:34:::0;;;6694:13:::1;:30:::0;;;6734:22:::1;6746:9:::0;6734:11:::1;:22::i;:::-;6766:54;6794:25;6766:27;:54::i;:::-;6830:26;6849:6;6830:18;:26::i;:::-;3483:14:24::0;3479:99;;;3529:5;3513:21;;;;;;3553:14;;-1:-1:-1;8268:36:261;;3553:14:24;;8256:2:261;8241:18;3553:14:24;;;;;;;3479:99;3101:483;6389:474:101;;;;;:::o;1186:320:25:-;1476:19;;;:23;;;1186:320::o;1599:130:23:-;1513:6;;1662:23;1513:6;929:10:26;1662:23:23;1654:68;;;;;;;9921:2:261;1654:68:23;;;9903:21:261;;;9940:18;;;9933:30;9999:34;9979:18;;;9972:62;10051:18;;1654:68:23;9719:356:261;429:480:160;508:4;524:13;839:1;806;774;742;699:6;657:7;624:4;598:270;570:298;429:480;-1:-1:-1;;;;;429:480:160:o;2673:187:23:-;2765:6;;;;2781:17;;;;;;;;;;;2813:40;;2765:6;;;2781:17;2765:6;;2813:40;;2746:16;;2813:40;2736:124;2673:187;:::o;9411:173:101:-;9497:4;9564:13;;9536:25;:41;;;;:::i;:::-;9520:12;:57;;;9411:173;-1:-1:-1;;9411:173:101:o;11740:134::-;11818:5;11848:18;11855:10;;11848:18;:::i;:::-;11842:25;;11835:32;;11740:134;;;;;:::o;20899:169::-;21049:15;;;;;;;20995:70;;;21021:24;20995:70;;;10609:92:261;;;;10717:11;;;;10710:27;;;;20995:70:101;;;;;;;;;;10753:12:261;;;;20995:70:101;;;;20899:169::o;18096:1451::-;18240:28;;;;18299;;;;18219:18;18575:13;4750:4;18489:39;4620:5;18489:14;:39;:::i;:::-;:73;;;;:::i;:::-;18467:95;;4300:5;18467:95;:::i;:::-;18453:135;;;;:::i;:::-;18428:160;;18687:14;18674:10;:27;18670:217;;;18741:27;18754:14;18741:10;:27;:::i;:::-;18717:20;;;;;;;:8;:20;;;;;:51;;:20;;;:51;;;;;:::i;:::-;;;;-1:-1:-1;;18855:20:101;;;;;;;:8;:20;;;;;;;;;;18828:48;;5968:74:261;;;6058:18;;;6051:34;18795:14:101;;-1:-1:-1;18795:14:101;;18828:48;;5941:18:261;18828:48:101;;;;;;;18670:217;19003:22;19072:3;19045:24;;19028:14;:41;;;;:::i;:::-;:47;;;;:::i;:::-;19003:72;;19106:10;19089:14;:27;19085:85;;;-1:-1:-1;19149:10:101;19085:85;19183:18;;19179:190;;19217:18;;;;;;;:8;:18;;;;;:36;;19239:14;;19217:18;:36;;19239:14;;19217:36;:::i;:::-;;;;-1:-1:-1;19267:28:101;;-1:-1:-1;19281:14:101;19267:28;;:::i;:::-;19339:18;;;;;;;:8;:18;;;;;;;;;;19314:44;;5968:74:261;;;6058:18;;;6051:34;19267:28:101;;-1:-1:-1;19314:44:101;;5941:18:261;19314:44:101;;;;;;;19179:190;19418:14;;19414:85;;19448:40;;19464:1;;19448:40;;;;;19477:10;;19464:1;19448:40;19464:1;19448:40;19477:10;19464:1;19448:40;;;;;;;;;;;;;;;;;;;;;19414:85;19539:1;19508:17;:28;;:32;;;;18209:1338;;;;18096:1451;;;:::o;8893:212::-;8977:4;9017:21;9001:12;:37;;:96;;;;-1:-1:-1;9082:15:101;;9058:39;;:21;:39;:::i;1003:95:23:-;4910:13:24;;;;;;;4902:69;;;;;;;11490:2:261;4902:69:24;;;11472:21:261;11529:2;11509:18;;;11502:30;11568:34;11548:18;;;11541:62;11639:13;11619:18;;;11612:41;11670:19;;4902:69:24;11288:407:261;4902:69:24;1065:26:23::1;4910:13:24::0;;;;;;;4902:69;;;;;;;11490:2:261;4902:69:24;;;11472:21:261;11529:2;11509:18;;;11502:30;11568:34;11548:18;;;11541:62;11639:13;11619:18;;;11612:41;11670:19;;4902:69:24;11288:407:261;4902:69:24;1176:32:23::1;929:10:26::0;1176:18:23::1;:32::i;196:196:261:-:0;264:20;;324:42;313:54;;303:65;;293:93;;382:1;379;372:12;293:93;196:196;;;:::o;397:186::-;456:6;509:2;497:9;488:7;484:23;480:32;477:52;;;525:1;522;515:12;477:52;548:29;567:9;548:29;:::i;588:180::-;647:6;700:2;688:9;679:7;675:23;671:32;668:52;;;716:1;713;706:12;668:52;-1:-1:-1;739:23:261;;588:180;-1:-1:-1;588:180:261:o;773:531::-;815:3;853:5;847:12;880:6;875:3;868:19;905:1;915:162;929:6;926:1;923:13;915:162;;;991:4;1047:13;;;1043:22;;1037:29;1019:11;;;1015:20;;1008:59;944:12;915:162;;;1095:6;1092:1;1089:13;1086:87;;;1161:1;1154:4;1145:6;1140:3;1136:16;1132:27;1125:38;1086:87;-1:-1:-1;1218:2:261;1206:15;1223:66;1202:88;1193:98;;;;1293:4;1189:109;;773:531;-1:-1:-1;;773:531:261:o;1309:220::-;1458:2;1447:9;1440:21;1421:4;1478:45;1519:2;1508:9;1504:18;1496:6;1478:45;:::i;1534:347::-;1585:8;1595:6;1649:3;1642:4;1634:6;1630:17;1626:27;1616:55;;1667:1;1664;1657:12;1616:55;-1:-1:-1;1690:20:261;;1733:18;1722:30;;1719:50;;;1765:1;1762;1755:12;1719:50;1802:4;1794:6;1790:17;1778:29;;1854:3;1847:4;1838:6;1830;1826:19;1822:30;1819:39;1816:59;;;1871:1;1868;1861:12;1816:59;1534:347;;;;;:::o;1886:477::-;1965:6;1973;1981;2034:2;2022:9;2013:7;2009:23;2005:32;2002:52;;;2050:1;2047;2040:12;2002:52;2086:9;2073:23;2063:33;;2147:2;2136:9;2132:18;2119:32;2174:18;2166:6;2163:30;2160:50;;;2206:1;2203;2196:12;2160:50;2245:58;2295:7;2286:6;2275:9;2271:22;2245:58;:::i;:::-;1886:477;;2322:8;;-1:-1:-1;2219:84:261;;-1:-1:-1;;;;1886:477:261:o;2368:184::-;2420:77;2417:1;2410:88;2517:4;2514:1;2507:15;2541:4;2538:1;2531:15;2557:300;2644:1;2637:5;2634:12;2624:200;;2680:77;2677:1;2670:88;2781:4;2778:1;2771:15;2809:4;2806:1;2799:15;2624:200;2833:18;;2557:300::o;2862:221::-;3015:2;3000:18;;3027:50;3004:9;3059:6;3027:50;:::i;3088:785::-;3187:6;3195;3203;3211;3219;3272:2;3260:9;3251:7;3247:23;3243:32;3240:52;;;3288:1;3285;3278:12;3240:52;3324:9;3311:23;3301:33;;3385:2;3374:9;3370:18;3357:32;3408:18;3449:2;3441:6;3438:14;3435:34;;;3465:1;3462;3455:12;3435:34;3504:58;3554:7;3545:6;3534:9;3530:22;3504:58;:::i;:::-;3581:8;;-1:-1:-1;3478:84:261;-1:-1:-1;3669:2:261;3654:18;;3641:32;;-1:-1:-1;3685:16:261;;;3682:36;;;3714:1;3711;3704:12;3682:36;;3753:60;3805:7;3794:8;3783:9;3779:24;3753:60;:::i;:::-;3088:785;;;;-1:-1:-1;3088:785:261;;-1:-1:-1;3832:8:261;;3727:86;3088:785;-1:-1:-1;;;3088:785:261:o;4593:409::-;4663:6;4671;4724:2;4712:9;4703:7;4699:23;4695:32;4692:52;;;4740:1;4737;4730:12;4692:52;4780:9;4767:23;4813:18;4805:6;4802:30;4799:50;;;4845:1;4842;4835:12;4799:50;4884:58;4934:7;4925:6;4914:9;4910:22;4884:58;:::i;:::-;4961:8;;4858:84;;-1:-1:-1;4593:409:261;-1:-1:-1;;;;4593:409:261:o;5007:460::-;5102:6;5110;5118;5126;5134;5187:3;5175:9;5166:7;5162:23;5158:33;5155:53;;;5204:1;5201;5194:12;5155:53;5227:29;5246:9;5227:29;:::i;:::-;5217:39;5303:2;5288:18;;5275:32;;-1:-1:-1;5354:2:261;5339:18;;5326:32;;5405:2;5390:18;;5377:32;;-1:-1:-1;5456:3:261;5441:19;5428:33;;-1:-1:-1;5007:460:261;-1:-1:-1;;;5007:460:261:o;5472:184::-;5524:77;5521:1;5514:88;5621:4;5618:1;5611:15;5645:4;5642:1;5635:15;5661:128;5701:3;5732:1;5728:6;5725:1;5722:13;5719:39;;;5738:18;;:::i;:::-;-1:-1:-1;5774:9:261;;5661:128::o;6406:271::-;6589:6;6581;6576:3;6563:33;6545:3;6615:16;;6640:13;;;6615:16;6406:271;-1:-1:-1;6406:271:261:o;6682:325::-;6770:6;6765:3;6758:19;6822:6;6815:5;6808:4;6803:3;6799:14;6786:43;;6874:1;6867:4;6858:6;6853:3;6849:16;6845:27;6838:38;6740:3;6996:4;6926:66;6921:2;6913:6;6909:15;6905:88;6900:3;6896:98;6892:109;6885:116;;6682:325;;;;:::o;7012:405::-;7215:2;7204:9;7197:21;7178:4;7241:45;7282:2;7271:9;7267:18;7259:6;7241:45;:::i;:::-;7334:9;7326:6;7322:22;7317:2;7306:9;7302:18;7295:50;7362:49;7404:6;7396;7388;7362:49;:::i;:::-;7354:57;7012:405;-1:-1:-1;;;;;;7012:405:261:o;7422:359::-;7626:2;7615:9;7608:21;7589:4;7646:61;7703:2;7692:9;7688:18;7680:6;7672;7646:61;:::i;:::-;7638:69;;7716:59;7771:2;7760:9;7756:18;7748:6;7716:59;:::i;:::-;7422:359;;;;;;:::o;8568:125::-;8608:4;8636:1;8633;8630:8;8627:34;;;8641:18;;:::i;:::-;-1:-1:-1;8678:9:261;;8568:125::o;10080:369::-;10238:66;10200:19;;10322:11;;;;10353:1;10345:10;;10342:101;;;10430:2;10424;10417:3;10414:1;10410:11;10407:1;10403:19;10399:28;10395:2;10391:37;10387:46;10378:55;;10342:101;;;10080:369;;;;:::o;10776:228::-;10816:7;10942:1;10874:66;10870:74;10867:1;10864:81;10859:1;10852:9;10845:17;10841:105;10838:131;;;10949:18;;:::i;:::-;-1:-1:-1;10989:9:261;;10776:228::o;11009:274::-;11049:1;11075;11065:189;;11110:77;11107:1;11100:88;11211:4;11208:1;11201:15;11239:4;11236:1;11229:15;11065:189;-1:-1:-1;11268:9:261;;11009:274::o","linkReferences":{}},"methodIdentifiers":{"balances(address)":"27e235e3","bondSize()":"7099c581","challenge(uint256,bytes)":"a03aafbf","challengeWindow()":"861a1412","deposit()":"d0e30db0","fixedResolutionCost()":"95611852","getChallenge(uint256,bytes)":"848afb3d","getChallengeStatus(uint256,bytes)":"79e8a8b3","initialize(address,uint256,uint256,uint256,uint256)":"f92ad219","owner()":"8da5cb5b","renounceOwnership()":"715018a6","resolve(uint256,bytes,bytes)":"7ae929d9","resolveWindow()":"21cf39ee","resolverRefundPercentage()":"8ecb85e1","setBondSize(uint256)":"d7d04e54","setResolverRefundPercentage(uint256)":"336409fd","transferOwnership(address)":"f2fde38b","unlockBond(uint256,bytes)":"93988233","validateCommitment(bytes)":"93fb1944","variableResolutionCost()":"23c30f59","variableResolutionCostPrecision()":"4ebaf3ce","version()":"54fd4d50","withdraw()":"3ccfd60b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"BondTooLow\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChallengeExists\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChallengeNotActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChallengeNotExpired\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ChallengeWindowNotOpen\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"commitmentType\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"expectedLength\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualLength\",\"type\":\"uint256\"}],\"name\":\"InvalidCommitmentLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"providedDataCommitment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"expectedCommitment\",\"type\":\"bytes\"}],\"name\":\"InvalidInputData\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"invalidResolverRefundPercentage\",\"type\":\"uint256\"}],\"name\":\"InvalidResolverRefundPercentage\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"commitmentType\",\"type\":\"uint8\"}],\"name\":\"UnknownCommitmentType\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WithdrawalFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"name\":\"BalanceChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"challengedBlockNumber\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"challengedCommitment\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"enum ChallengeStatus\",\"name\":\"status\",\"type\":\"uint8\"}],\"name\":\"ChallengeStatusChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"challengeWindow\",\"type\":\"uint256\"}],\"name\":\"RequiredBondSizeChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"resolverRefundPercentage\",\"type\":\"uint256\"}],\"name\":\"ResolverRefundPercentageChanged\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balances\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"bondSize\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"challengedCommitment\",\"type\":\"bytes\"}],\"name\":\"challenge\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"challengeWindow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"fixedResolutionCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"challengedCommitment\",\"type\":\"bytes\"}],\"name\":\"getChallenge\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"challenger\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"lockedBond\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"startBlock\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"resolvedBlock\",\"type\":\"uint256\"}],\"internalType\":\"struct Challenge\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"challengedCommitment\",\"type\":\"bytes\"}],\"name\":\"getChallengeStatus\",\"outputs\":[{\"internalType\":\"enum ChallengeStatus\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_challengeWindow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resolveWindow\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bondSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_resolverRefundPercentage\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"challengedCommitment\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"resolveData\",\"type\":\"bytes\"}],\"name\":\"resolve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolveWindow\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"resolverRefundPercentage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_bondSize\",\"type\":\"uint256\"}],\"name\":\"setBondSize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_resolverRefundPercentage\",\"type\":\"uint256\"}],\"name\":\"setResolverRefundPercentage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"challengedBlockNumber\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"challengedCommitment\",\"type\":\"bytes\"}],\"name\":\"unlockBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"commitment\",\"type\":\"bytes\"}],\"name\":\"validateCommitment\",\"outputs\":[],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"variableResolutionCost\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"variableResolutionCostPrecision\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"events\":{\"ChallengeStatusChanged(uint256,bytes,uint8)\":{\"params\":{\"challengedBlockNumber\":\"The block number at which the commitment was made.\",\"challengedCommitment\":\"The commitment that is being challenged.\",\"status\":\"The new status of the challenge.\"}}},\"kind\":\"dev\",\"methods\":{\"challenge(uint256,bytes)\":{\"details\":\"The block number parameter is necessary for the contract to verify the challenge window, since the contract cannot access the block number of the commitment. The function reverts if the commitment type (first byte) is unknown, if the caller does not have a bond or if the challenge already exists.\",\"params\":{\"challengedBlockNumber\":\"The block number at which the commitment was made.\",\"challengedCommitment\":\"The commitment that is being challenged.\"}},\"getChallenge(uint256,bytes)\":{\"details\":\"Unlike with a public `challenges` mapping, we can return a Challenge struct instead of tuple.\",\"params\":{\"challengedBlockNumber\":\"The block number at which the commitment was made.\",\"challengedCommitment\":\"The commitment that is being challenged.\"},\"returns\":{\"_0\":\"The challenge struct.\"}},\"getChallengeStatus(uint256,bytes)\":{\"params\":{\"challengedBlockNumber\":\"The block number at which the commitment was made.\",\"challengedCommitment\":\"The commitment that is being challenged.\"},\"returns\":{\"_0\":\"The status of the challenge.\"}},\"initialize(address,uint256,uint256,uint256,uint256)\":{\"params\":{\"_bondSize\":\"The amount required to post a challenge.\",\"_challengeWindow\":\"The block interval during which a commitment can be challenged.\",\"_owner\":\"The owner of the contract.\",\"_resolveWindow\":\"The block interval during which a challenge can be resolved.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner.\"},\"resolve(uint256,bytes,bytes)\":{\"details\":\"The function computes a commitment from the provided resolveData and verifies that it matches the challenged commitment. It reverts if the commitment type is unknown, if the data doesn't match the commitment, if the challenge is not active or if the resolve window is not open.\",\"params\":{\"challengedBlockNumber\":\"The block number at which the commitment was made.\",\"challengedCommitment\":\"The challenged commitment that is being resolved.\",\"resolveData\":\"The pre-image data corresponding to the challenged commitment.\"}},\"setBondSize(uint256)\":{\"params\":{\"_bondSize\":\"The amount required to post a challenge.\"}},\"setResolverRefundPercentage(uint256)\":{\"details\":\"The function reverts if the provided percentage is above 100, since the refund logic assumes a value smaller or equal to 100%.\",\"params\":{\"_resolverRefundPercentage\":\"The percentage of the resolving cost to be refunded to the resolver.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unlockBond(uint256,bytes)\":{\"details\":\"The function reverts if the challenge is not expired. If the expiration is successful, the challenger's bond is unlocked.\",\"params\":{\"challengedBlockNumber\":\"The block number at which the commitment was made.\",\"challengedCommitment\":\"The commitment that is being challenged.\"}},\"validateCommitment(bytes)\":{\"details\":\"The type of a commitment is stored in its first byte. The function reverts with `UnknownCommitmentType` if the type is not known and with `InvalidCommitmentLength` if the commitment has an unexpected length.\",\"params\":{\"commitment\":\"The commitment for which to check the type.\"}}},\"stateVariables\":{\"fixedResolutionCost\":{\"details\":\"The value is estimated by measuring the cost of resolving with `bytes(0)`\"},\"resolverRefundPercentage\":{\"details\":\"There are no decimals, ie a value of 50 corresponds to 50%.\"},\"variableResolutionCost\":{\"details\":\"upper limit; The value is estimated by measuring the cost of resolving with variable size data where each byte is non-zero.\"},\"variableResolutionCostPrecision\":{\"details\":\"The precision of the variable resolution cost.\"},\"version\":{\"custom:semver\":\"1.0.0\"}},\"title\":\"DataAvailabilityChallenge\",\"version\":1},\"userdoc\":{\"errors\":{\"BondTooLow(uint256,uint256)\":[{\"notice\":\"Error for when the challenger's bond is too low.\"}],\"ChallengeExists()\":[{\"notice\":\"Error for when attempting to challenge a commitment that already has a challenge.\"}],\"ChallengeNotActive()\":[{\"notice\":\"Error for when attempting to resolve a challenge that is not active.\"}],\"ChallengeNotExpired()\":[{\"notice\":\"Error for when attempting to unlock a bond from a challenge that is not expired.\"}],\"ChallengeWindowNotOpen()\":[{\"notice\":\"Error for when attempting to challenge a commitment that is not in the challenge window.\"}],\"InvalidCommitmentLength(uint8,uint256,uint256)\":[{\"notice\":\"Error for when the commitment length does not match the commitment type\"}],\"InvalidInputData(bytes,bytes)\":[{\"notice\":\"Error for when the provided input data doesn't match the commitment.\"}],\"InvalidResolverRefundPercentage(uint256)\":[{\"notice\":\"Error for when the provided resolver refund percentage exceeds 100%.\"}],\"UnknownCommitmentType(uint8)\":[{\"notice\":\"Error for when a the type of a given commitment is unknown\"}],\"WithdrawalFailed()\":[{\"notice\":\"Error for when the call to withdraw a bond failed.\"}]},\"events\":{\"BalanceChanged(address,uint256)\":{\"notice\":\"An event that is emitted when a user's bond balance changes.\"},\"ChallengeStatusChanged(uint256,bytes,uint8)\":{\"notice\":\"An event that is emitted when the status of a challenge changes.\"},\"RequiredBondSizeChanged(uint256)\":{\"notice\":\"An event that is emitted when the bond size required to initiate a challenge changes.\"},\"ResolverRefundPercentageChanged(uint256)\":{\"notice\":\"An event that is emitted when the percentage of the resolving cost to be refunded to the resolver changes.\"}},\"kind\":\"user\",\"methods\":{\"balances(address)\":{\"notice\":\"A mapping from addresses to their bond balance in the contract.\"},\"bondSize()\":{\"notice\":\"The amount required to post a challenge.\"},\"challenge(uint256,bytes)\":{\"notice\":\"Challenge a commitment at a given block number.\"},\"challengeWindow()\":{\"notice\":\"The block interval during which a commitment can be challenged.\"},\"constructor\":{\"notice\":\"Constructs the DataAvailabilityChallenge contract. Cannot set the owner to `address(0)` due to the Ownable contract's implementation, so set it to `address(0xdEaD)`.\"},\"deposit()\":{\"notice\":\"Post a bond as prerequisite for challenging a commitment.\"},\"fixedResolutionCost()\":{\"notice\":\"The fixed cost of resolving a challenge.\"},\"getChallenge(uint256,bytes)\":{\"notice\":\"Returns a challenge for the given block number and commitment.\"},\"getChallengeStatus(uint256,bytes)\":{\"notice\":\"Returns the status of a challenge for a given challenged block number and challenged commitment.\"},\"initialize(address,uint256,uint256,uint256,uint256)\":{\"notice\":\"Initializes the contract.\"},\"resolve(uint256,bytes,bytes)\":{\"notice\":\"Resolve a challenge by providing the data corresponding to the challenged commitment.\"},\"resolveWindow()\":{\"notice\":\"The block interval during which a challenge can be resolved.\"},\"resolverRefundPercentage()\":{\"notice\":\"The percentage of the resolving cost to be refunded to the resolver.\"},\"setBondSize(uint256)\":{\"notice\":\"Sets the bond size.\"},\"setResolverRefundPercentage(uint256)\":{\"notice\":\"Sets the percentage of the resolving cost to be refunded to the resolver.\"},\"unlockBond(uint256,bytes)\":{\"notice\":\"Unlock the bond associated wth an expired challenge.\"},\"validateCommitment(bytes)\":{\"notice\":\"Validate that a given commitment has a known type and the expected length for this type.\"},\"variableResolutionCost()\":{\"notice\":\"The variable cost of resolving a callenge per byte scaled by the variableResolutionCostPrecision.\"},\"version()\":{\"notice\":\"Semantic version.\"},\"withdraw()\":{\"notice\":\"Withdraw a user's unlocked bond.\"}},\"notice\":\"This contract enables data availability of a data commitment at a given block number to be challenged. To challenge a commitment, the challenger must first post a bond (bondSize). Challenging a commitment is only possible within a certain block interval (challengeWindow) after the commitment was made. If the challenge is not resolved within a certain block interval (resolveWindow), the challenge can be expired. If a challenge is expired, the challenger's bond is unlocked and the challenged commitment is added to the chain of expired challenges.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L1/DataAvailabilityChallenge.sol\":\"DataAvailabilityChallenge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@cwia/=lib/clones-with-immutable-args/src/\",\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/lib-keccak/lib/solady/src/\",\":clones-with-immutable-args/=lib/clones-with-immutable-args/src/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/src/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a\",\"dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c\",\"dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a\"]},\"src/L1/DataAvailabilityChallenge.sol\":{\"keccak256\":\"0x3acbe46138dcf7e8d8b1623c856b32fe99dd18cc6d49a252c866358eadcb4b41\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0c09b84ecfbe843a2ba408a82de297f31371273102eb3907a833d19483d041e7\",\"dweb:/ipfs/QmVDcNEo7bdHgrNDezaan3EQ1UmZEFkX3KsxpReTaVeF4r\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"balance","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"BondTooLow"},{"inputs":[],"type":"error","name":"ChallengeExists"},{"inputs":[],"type":"error","name":"ChallengeNotActive"},{"inputs":[],"type":"error","name":"ChallengeNotExpired"},{"inputs":[],"type":"error","name":"ChallengeWindowNotOpen"},{"inputs":[{"internalType":"uint8","name":"commitmentType","type":"uint8"},{"internalType":"uint256","name":"expectedLength","type":"uint256"},{"internalType":"uint256","name":"actualLength","type":"uint256"}],"type":"error","name":"InvalidCommitmentLength"},{"inputs":[{"internalType":"bytes","name":"providedDataCommitment","type":"bytes"},{"internalType":"bytes","name":"expectedCommitment","type":"bytes"}],"type":"error","name":"InvalidInputData"},{"inputs":[{"internalType":"uint256","name":"invalidResolverRefundPercentage","type":"uint256"}],"type":"error","name":"InvalidResolverRefundPercentage"},{"inputs":[{"internalType":"uint8","name":"commitmentType","type":"uint8"}],"type":"error","name":"UnknownCommitmentType"},{"inputs":[],"type":"error","name":"WithdrawalFailed"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":false},{"internalType":"uint256","name":"balance","type":"uint256","indexed":false}],"type":"event","name":"BalanceChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"challengedBlockNumber","type":"uint256","indexed":true},{"internalType":"bytes","name":"challengedCommitment","type":"bytes","indexed":false},{"internalType":"enum ChallengeStatus","name":"status","type":"uint8","indexed":false}],"type":"event","name":"ChallengeStatusChanged","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"challengeWindow","type":"uint256","indexed":false}],"type":"event","name":"RequiredBondSizeChanged","anonymous":false},{"inputs":[{"internalType":"uint256","name":"resolverRefundPercentage","type":"uint256","indexed":false}],"type":"event","name":"ResolverRefundPercentageChanged","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"bondSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"challengedBlockNumber","type":"uint256"},{"internalType":"bytes","name":"challengedCommitment","type":"bytes"}],"stateMutability":"payable","type":"function","name":"challenge"},{"inputs":[],"stateMutability":"view","type":"function","name":"challengeWindow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[],"stateMutability":"view","type":"function","name":"fixedResolutionCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"challengedBlockNumber","type":"uint256"},{"internalType":"bytes","name":"challengedCommitment","type":"bytes"}],"stateMutability":"view","type":"function","name":"getChallenge","outputs":[{"internalType":"struct Challenge","name":"","type":"tuple","components":[{"internalType":"address","name":"challenger","type":"address"},{"internalType":"uint256","name":"lockedBond","type":"uint256"},{"internalType":"uint256","name":"startBlock","type":"uint256"},{"internalType":"uint256","name":"resolvedBlock","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"challengedBlockNumber","type":"uint256"},{"internalType":"bytes","name":"challengedCommitment","type":"bytes"}],"stateMutability":"view","type":"function","name":"getChallengeStatus","outputs":[{"internalType":"enum ChallengeStatus","name":"","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"uint256","name":"_challengeWindow","type":"uint256"},{"internalType":"uint256","name":"_resolveWindow","type":"uint256"},{"internalType":"uint256","name":"_bondSize","type":"uint256"},{"internalType":"uint256","name":"_resolverRefundPercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"challengedBlockNumber","type":"uint256"},{"internalType":"bytes","name":"challengedCommitment","type":"bytes"},{"internalType":"bytes","name":"resolveData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"resolve"},{"inputs":[],"stateMutability":"view","type":"function","name":"resolveWindow","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"resolverRefundPercentage","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_bondSize","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setBondSize"},{"inputs":[{"internalType":"uint256","name":"_resolverRefundPercentage","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setResolverRefundPercentage"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"uint256","name":"challengedBlockNumber","type":"uint256"},{"internalType":"bytes","name":"challengedCommitment","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"unlockBond"},{"inputs":[{"internalType":"bytes","name":"commitment","type":"bytes"}],"stateMutability":"pure","type":"function","name":"validateCommitment"},{"inputs":[],"stateMutability":"view","type":"function","name":"variableResolutionCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"variableResolutionCostPrecision","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdraw"},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"challenge(uint256,bytes)":{"details":"The block number parameter is necessary for the contract to verify the challenge window, since the contract cannot access the block number of the commitment. The function reverts if the commitment type (first byte) is unknown, if the caller does not have a bond or if the challenge already exists.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."}},"getChallenge(uint256,bytes)":{"details":"Unlike with a public `challenges` mapping, we can return a Challenge struct instead of tuple.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."},"returns":{"_0":"The challenge struct."}},"getChallengeStatus(uint256,bytes)":{"params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."},"returns":{"_0":"The status of the challenge."}},"initialize(address,uint256,uint256,uint256,uint256)":{"params":{"_bondSize":"The amount required to post a challenge.","_challengeWindow":"The block interval during which a commitment can be challenged.","_owner":"The owner of the contract.","_resolveWindow":"The block interval during which a challenge can be resolved."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"resolve(uint256,bytes,bytes)":{"details":"The function computes a commitment from the provided resolveData and verifies that it matches the challenged commitment. It reverts if the commitment type is unknown, if the data doesn't match the commitment, if the challenge is not active or if the resolve window is not open.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The challenged commitment that is being resolved.","resolveData":"The pre-image data corresponding to the challenged commitment."}},"setBondSize(uint256)":{"params":{"_bondSize":"The amount required to post a challenge."}},"setResolverRefundPercentage(uint256)":{"details":"The function reverts if the provided percentage is above 100, since the refund logic assumes a value smaller or equal to 100%.","params":{"_resolverRefundPercentage":"The percentage of the resolving cost to be refunded to the resolver."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unlockBond(uint256,bytes)":{"details":"The function reverts if the challenge is not expired. If the expiration is successful, the challenger's bond is unlocked.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."}},"validateCommitment(bytes)":{"details":"The type of a commitment is stored in its first byte. The function reverts with `UnknownCommitmentType` if the type is not known and with `InvalidCommitmentLength` if the commitment has an unexpected length.","params":{"commitment":"The commitment for which to check the type."}}},"version":1},"userdoc":{"kind":"user","methods":{"balances(address)":{"notice":"A mapping from addresses to their bond balance in the contract."},"bondSize()":{"notice":"The amount required to post a challenge."},"challenge(uint256,bytes)":{"notice":"Challenge a commitment at a given block number."},"challengeWindow()":{"notice":"The block interval during which a commitment can be challenged."},"constructor":{"notice":"Constructs the DataAvailabilityChallenge contract. Cannot set the owner to `address(0)` due to the Ownable contract's implementation, so set it to `address(0xdEaD)`."},"deposit()":{"notice":"Post a bond as prerequisite for challenging a commitment."},"fixedResolutionCost()":{"notice":"The fixed cost of resolving a challenge."},"getChallenge(uint256,bytes)":{"notice":"Returns a challenge for the given block number and commitment."},"getChallengeStatus(uint256,bytes)":{"notice":"Returns the status of a challenge for a given challenged block number and challenged commitment."},"initialize(address,uint256,uint256,uint256,uint256)":{"notice":"Initializes the contract."},"resolve(uint256,bytes,bytes)":{"notice":"Resolve a challenge by providing the data corresponding to the challenged commitment."},"resolveWindow()":{"notice":"The block interval during which a challenge can be resolved."},"resolverRefundPercentage()":{"notice":"The percentage of the resolving cost to be refunded to the resolver."},"setBondSize(uint256)":{"notice":"Sets the bond size."},"setResolverRefundPercentage(uint256)":{"notice":"Sets the percentage of the resolving cost to be refunded to the resolver."},"unlockBond(uint256,bytes)":{"notice":"Unlock the bond associated wth an expired challenge."},"validateCommitment(bytes)":{"notice":"Validate that a given commitment has a known type and the expected length for this type."},"variableResolutionCost()":{"notice":"The variable cost of resolving a callenge per byte scaled by the variableResolutionCostPrecision."},"version()":{"notice":"Semantic version."},"withdraw()":{"notice":"Withdraw a user's unlocked bond."}},"version":1}},"settings":{"remappings":["@cwia/=lib/clones-with-immutable-args/src/","@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/lib-keccak/lib/solady/src/","clones-with-immutable-args/=lib/clones-with-immutable-args/src/","ds-test/=lib/forge-std/lib/ds-test/src/","forge-std/=lib/forge-std/src/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/src/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L1/DataAvailabilityChallenge.sol":"DataAvailabilityChallenge"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0x247c62047745915c0af6b955470a72d1696ebad4352d7d3011aef1a2463cd888","urls":["bzz-raw://d7fc8396619de513c96b6e00301b88dd790e83542aab918425633a5f7297a15a","dweb:/ipfs/QmXbP4kiZyp7guuS7xe8KaybnwkRPGrBc2Kbi3vhcTfpxb"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0x963ea7f0b48b032eef72fe3a7582edf78408d6f834115b9feadd673a4d5bd149","urls":["bzz-raw://d6520943ea55fdf5f0bafb39ed909f64de17051bc954ff3e88c9e5621412c79c","dweb:/ipfs/QmWZ4rAKTQbNG2HxGs46AcTXShsVytKeLs7CUCdCSv5N7a"],"license":"MIT"},"src/L1/DataAvailabilityChallenge.sol":{"keccak256":"0x3acbe46138dcf7e8d8b1623c856b32fe99dd18cc6d49a252c866358eadcb4b41","urls":["bzz-raw://0c09b84ecfbe843a2ba408a82de297f31371273102eb3907a833d19483d041e7","dweb:/ipfs/QmVDcNEo7bdHgrNDezaan3EQ1UmZEFkX3KsxpReTaVeF4r"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":45180,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":45183,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":45608,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"__gap","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":45052,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"_owner","offset":0,"slot":"51","type":"t_address"},{"astId":45172,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"__gap","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":74537,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"challengeWindow","offset":0,"slot":"101","type":"t_uint256"},{"astId":74540,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"resolveWindow","offset":0,"slot":"102","type":"t_uint256"},{"astId":74543,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"bondSize","offset":0,"slot":"103","type":"t_uint256"},{"astId":74546,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"resolverRefundPercentage","offset":0,"slot":"104","type":"t_uint256"},{"astId":74551,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"balances","offset":0,"slot":"105","type":"t_mapping(t_address,t_uint256)"},{"astId":74559,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"challenges","offset":0,"slot":"106","type":"t_mapping(t_uint256,t_mapping(t_bytes_memory_ptr,t_struct(Challenge)74438_storage))"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_array(t_uint256)50_storage":{"encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes_memory_ptr":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_mapping(t_bytes_memory_ptr,t_struct(Challenge)74438_storage)":{"encoding":"mapping","key":"t_bytes_memory_ptr","label":"mapping(bytes => struct Challenge)","numberOfBytes":"32","value":"t_struct(Challenge)74438_storage"},"t_mapping(t_uint256,t_mapping(t_bytes_memory_ptr,t_struct(Challenge)74438_storage))":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => mapping(bytes => struct Challenge))","numberOfBytes":"32","value":"t_mapping(t_bytes_memory_ptr,t_struct(Challenge)74438_storage)"},"t_struct(Challenge)74438_storage":{"encoding":"inplace","label":"struct Challenge","numberOfBytes":"128","members":[{"astId":74431,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"challenger","offset":0,"slot":"0","type":"t_address"},{"astId":74433,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"lockedBond","offset":0,"slot":"1","type":"t_uint256"},{"astId":74435,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"startBlock","offset":0,"slot":"2","type":"t_uint256"},{"astId":74437,"contract":"src/L1/DataAvailabilityChallenge.sol:DataAvailabilityChallenge","label":"resolvedBlock","offset":0,"slot":"3","type":"t_uint256"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"balances(address)":{"notice":"A mapping from addresses to their bond balance in the contract."},"bondSize()":{"notice":"The amount required to post a challenge."},"challenge(uint256,bytes)":{"notice":"Challenge a commitment at a given block number."},"challengeWindow()":{"notice":"The block interval during which a commitment can be challenged."},"constructor":{"notice":"Constructs the DataAvailabilityChallenge contract. Cannot set the owner to `address(0)` due to the Ownable contract's implementation, so set it to `address(0xdEaD)`."},"deposit()":{"notice":"Post a bond as prerequisite for challenging a commitment."},"fixedResolutionCost()":{"notice":"The fixed cost of resolving a challenge."},"getChallenge(uint256,bytes)":{"notice":"Returns a challenge for the given block number and commitment."},"getChallengeStatus(uint256,bytes)":{"notice":"Returns the status of a challenge for a given challenged block number and challenged commitment."},"initialize(address,uint256,uint256,uint256,uint256)":{"notice":"Initializes the contract."},"resolve(uint256,bytes,bytes)":{"notice":"Resolve a challenge by providing the data corresponding to the challenged commitment."},"resolveWindow()":{"notice":"The block interval during which a challenge can be resolved."},"resolverRefundPercentage()":{"notice":"The percentage of the resolving cost to be refunded to the resolver."},"setBondSize(uint256)":{"notice":"Sets the bond size."},"setResolverRefundPercentage(uint256)":{"notice":"Sets the percentage of the resolving cost to be refunded to the resolver."},"unlockBond(uint256,bytes)":{"notice":"Unlock the bond associated wth an expired challenge."},"validateCommitment(bytes)":{"notice":"Validate that a given commitment has a known type and the expected length for this type."},"variableResolutionCost()":{"notice":"The variable cost of resolving a callenge per byte scaled by the variableResolutionCostPrecision."},"version()":{"notice":"Semantic version."},"withdraw()":{"notice":"Withdraw a user's unlocked bond."}},"events":{"BalanceChanged(address,uint256)":{"notice":"An event that is emitted when a user's bond balance changes."},"ChallengeStatusChanged(uint256,bytes,uint8)":{"notice":"An event that is emitted when the status of a challenge changes."},"RequiredBondSizeChanged(uint256)":{"notice":"An event that is emitted when the bond size required to initiate a challenge changes."},"ResolverRefundPercentageChanged(uint256)":{"notice":"An event that is emitted when the percentage of the resolving cost to be refunded to the resolver changes."}},"errors":{"BondTooLow(uint256,uint256)":[{"notice":"Error for when the challenger's bond is too low."}],"ChallengeExists()":[{"notice":"Error for when attempting to challenge a commitment that already has a challenge."}],"ChallengeNotActive()":[{"notice":"Error for when attempting to resolve a challenge that is not active."}],"ChallengeNotExpired()":[{"notice":"Error for when attempting to unlock a bond from a challenge that is not expired."}],"ChallengeWindowNotOpen()":[{"notice":"Error for when attempting to challenge a commitment that is not in the challenge window."}],"InvalidCommitmentLength(uint8,uint256,uint256)":[{"notice":"Error for when the commitment length does not match the commitment type"}],"InvalidInputData(bytes,bytes)":[{"notice":"Error for when the provided input data doesn't match the commitment."}],"InvalidResolverRefundPercentage(uint256)":[{"notice":"Error for when the provided resolver refund percentage exceeds 100%."}],"UnknownCommitmentType(uint8)":[{"notice":"Error for when a the type of a given commitment is unknown"}],"WithdrawalFailed()":[{"notice":"Error for when the call to withdraw a bond failed."}]},"notice":"This contract enables data availability of a data commitment at a given block number to be challenged. To challenge a commitment, the challenger must first post a bond (bondSize). Challenging a commitment is only possible within a certain block interval (challengeWindow) after the commitment was made. If the challenge is not resolved within a certain block interval (resolveWindow), the challenge can be expired. If a challenge is expired, the challenger's bond is unlocked and the challenged commitment is added to the chain of expired challenges."},"devdoc":{"version":1,"kind":"dev","methods":{"challenge(uint256,bytes)":{"details":"The block number parameter is necessary for the contract to verify the challenge window, since the contract cannot access the block number of the commitment. The function reverts if the commitment type (first byte) is unknown, if the caller does not have a bond or if the challenge already exists.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."}},"getChallenge(uint256,bytes)":{"details":"Unlike with a public `challenges` mapping, we can return a Challenge struct instead of tuple.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."},"returns":{"_0":"The challenge struct."}},"getChallengeStatus(uint256,bytes)":{"params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."},"returns":{"_0":"The status of the challenge."}},"initialize(address,uint256,uint256,uint256,uint256)":{"params":{"_bondSize":"The amount required to post a challenge.","_challengeWindow":"The block interval during which a commitment can be challenged.","_owner":"The owner of the contract.","_resolveWindow":"The block interval during which a challenge can be resolved."}},"owner()":{"details":"Returns the address of the current owner."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."},"resolve(uint256,bytes,bytes)":{"details":"The function computes a commitment from the provided resolveData and verifies that it matches the challenged commitment. It reverts if the commitment type is unknown, if the data doesn't match the commitment, if the challenge is not active or if the resolve window is not open.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The challenged commitment that is being resolved.","resolveData":"The pre-image data corresponding to the challenged commitment."}},"setBondSize(uint256)":{"params":{"_bondSize":"The amount required to post a challenge."}},"setResolverRefundPercentage(uint256)":{"details":"The function reverts if the provided percentage is above 100, since the refund logic assumes a value smaller or equal to 100%.","params":{"_resolverRefundPercentage":"The percentage of the resolving cost to be refunded to the resolver."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unlockBond(uint256,bytes)":{"details":"The function reverts if the challenge is not expired. If the expiration is successful, the challenger's bond is unlocked.","params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged."}},"validateCommitment(bytes)":{"details":"The type of a commitment is stored in its first byte. The function reverts with `UnknownCommitmentType` if the type is not known and with `InvalidCommitmentLength` if the commitment has an unexpected length.","params":{"commitment":"The commitment for which to check the type."}}},"events":{"ChallengeStatusChanged(uint256,bytes,uint8)":{"params":{"challengedBlockNumber":"The block number at which the commitment was made.","challengedCommitment":"The commitment that is being challenged.","status":"The new status of the challenge."}}},"title":"DataAvailabilityChallenge"},"ast":{"absolutePath":"src/L1/DataAvailabilityChallenge.sol","id":75276,"exportedSymbols":{"Challenge":[74438],"ChallengeStatus":[74427],"CommitmentType":[74429],"DataAvailabilityChallenge":[75250],"ISemver":[95872],"OwnableUpgradeable":[45173],"SafeCall":[91695],"computeCommitmentKeccak256":[75275]},"nodeType":"SourceUnit","src":"32:21037:101","nodes":[{"id":74416,"nodeType":"PragmaDirective","src":"32:23:101","nodes":[],"literals":["solidity","0.8",".15"]},{"id":74418,"nodeType":"ImportDirective","src":"57:103:101","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol","nameLocation":"-1:-1:-1","scope":75276,"sourceUnit":45174,"symbolAliases":[{"foreign":{"id":74417,"name":"OwnableUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45173,"src":"66:18:101","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74420,"nodeType":"ImportDirective","src":"161:52:101","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":75276,"sourceUnit":95873,"symbolAliases":[{"foreign":{"id":74419,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":95872,"src":"170:7:101","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74422,"nodeType":"ImportDirective","src":"214:54:101","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"src/libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":75276,"sourceUnit":91696,"symbolAliases":[{"foreign":{"id":74421,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91695,"src":"223:8:101","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":74427,"nodeType":"EnumDefinition","src":"330:81:101","nodes":[],"canonicalName":"ChallengeStatus","members":[{"id":74423,"name":"Uninitialized","nameLocation":"357:13:101","nodeType":"EnumValue","src":"357:13:101"},{"id":74424,"name":"Active","nameLocation":"376:6:101","nodeType":"EnumValue","src":"376:6:101"},{"id":74425,"name":"Resolved","nameLocation":"388:8:101","nodeType":"EnumValue","src":"388:8:101"},{"id":74426,"name":"Expired","nameLocation":"402:7:101","nodeType":"EnumValue","src":"402:7:101"}],"name":"ChallengeStatus","nameLocation":"335:15:101"},{"id":74429,"nodeType":"EnumDefinition","src":"467:37:101","nodes":[],"canonicalName":"CommitmentType","members":[{"id":74428,"name":"Keccak256","nameLocation":"493:9:101","nodeType":"EnumValue","src":"493:9:101"}],"name":"CommitmentType","nameLocation":"472:14:101"},{"id":74438,"nodeType":"StructDefinition","src":"769:119:101","nodes":[],"canonicalName":"Challenge","members":[{"constant":false,"id":74431,"mutability":"mutable","name":"challenger","nameLocation":"800:10:101","nodeType":"VariableDeclaration","scope":74438,"src":"792:18:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74430,"name":"address","nodeType":"ElementaryTypeName","src":"792:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74433,"mutability":"mutable","name":"lockedBond","nameLocation":"824:10:101","nodeType":"VariableDeclaration","scope":74438,"src":"816:18:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74432,"name":"uint256","nodeType":"ElementaryTypeName","src":"816:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74435,"mutability":"mutable","name":"startBlock","nameLocation":"848:10:101","nodeType":"VariableDeclaration","scope":74438,"src":"840:18:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74434,"name":"uint256","nodeType":"ElementaryTypeName","src":"840:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74437,"mutability":"mutable","name":"resolvedBlock","nameLocation":"872:13:101","nodeType":"VariableDeclaration","scope":74438,"src":"864:21:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74436,"name":"uint256","nodeType":"ElementaryTypeName","src":"864:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"name":"Challenge","nameLocation":"776:9:101","scope":75276,"visibility":"public"},{"id":75250,"nodeType":"ContractDefinition","src":"1574:19136:101","nodes":[{"id":74448,"nodeType":"ErrorDefinition","src":"1731:79:101","nodes":[],"documentation":{"id":74444,"nodeType":"StructuredDocumentation","src":"1646:80:101","text":"@notice Error for when the provided resolver refund percentage exceeds 100%."},"errorSelector":"16aa4e80","name":"InvalidResolverRefundPercentage","nameLocation":"1737:31:101","parameters":{"id":74447,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74446,"mutability":"mutable","name":"invalidResolverRefundPercentage","nameLocation":"1777:31:101","nodeType":"VariableDeclaration","scope":74448,"src":"1769:39:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74445,"name":"uint256","nodeType":"ElementaryTypeName","src":"1769:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1768:41:101"}},{"id":74455,"nodeType":"ErrorDefinition","src":"1881:52:101","nodes":[],"documentation":{"id":74449,"nodeType":"StructuredDocumentation","src":"1816:60:101","text":"@notice Error for when the challenger's bond is too low."},"errorSelector":"000155b5","name":"BondTooLow","nameLocation":"1887:10:101","parameters":{"id":74454,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74451,"mutability":"mutable","name":"balance","nameLocation":"1906:7:101","nodeType":"VariableDeclaration","scope":74455,"src":"1898:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74450,"name":"uint256","nodeType":"ElementaryTypeName","src":"1898:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74453,"mutability":"mutable","name":"required","nameLocation":"1923:8:101","nodeType":"VariableDeclaration","scope":74455,"src":"1915:16:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74452,"name":"uint256","nodeType":"ElementaryTypeName","src":"1915:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1897:35:101"}},{"id":74458,"nodeType":"ErrorDefinition","src":"2037:24:101","nodes":[],"documentation":{"id":74456,"nodeType":"StructuredDocumentation","src":"1939:93:101","text":"@notice Error for when attempting to challenge a commitment that already has a challenge."},"errorSelector":"9bb6c64e","name":"ChallengeExists","nameLocation":"2043:15:101","parameters":{"id":74457,"nodeType":"ParameterList","parameters":[],"src":"2058:2:101"}},{"id":74461,"nodeType":"ErrorDefinition","src":"2152:27:101","nodes":[],"documentation":{"id":74459,"nodeType":"StructuredDocumentation","src":"2067:80:101","text":"@notice Error for when attempting to resolve a challenge that is not active."},"errorSelector":"beb11d3b","name":"ChallengeNotActive","nameLocation":"2158:18:101","parameters":{"id":74460,"nodeType":"ParameterList","parameters":[],"src":"2176:2:101"}},{"id":74464,"nodeType":"ErrorDefinition","src":"2282:28:101","nodes":[],"documentation":{"id":74462,"nodeType":"StructuredDocumentation","src":"2185:92:101","text":"@notice Error for when attempting to unlock a bond from a challenge that is not expired."},"errorSelector":"151f07fe","name":"ChallengeNotExpired","nameLocation":"2288:19:101","parameters":{"id":74463,"nodeType":"ParameterList","parameters":[],"src":"2307:2:101"}},{"id":74467,"nodeType":"ErrorDefinition","src":"2421:31:101","nodes":[],"documentation":{"id":74465,"nodeType":"StructuredDocumentation","src":"2316:100:101","text":"@notice Error for when attempting to challenge a commitment that is not in the challenge window."},"errorSelector":"f9e0d1f3","name":"ChallengeWindowNotOpen","nameLocation":"2427:22:101","parameters":{"id":74466,"nodeType":"ParameterList","parameters":[],"src":"2449:2:101"}},{"id":74474,"nodeType":"ErrorDefinition","src":"2543:79:101","nodes":[],"documentation":{"id":74468,"nodeType":"StructuredDocumentation","src":"2458:80:101","text":"@notice Error for when the provided input data doesn't match the commitment."},"errorSelector":"1a0bbf9f","name":"InvalidInputData","nameLocation":"2549:16:101","parameters":{"id":74473,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74470,"mutability":"mutable","name":"providedDataCommitment","nameLocation":"2572:22:101","nodeType":"VariableDeclaration","scope":74474,"src":"2566:28:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":74469,"name":"bytes","nodeType":"ElementaryTypeName","src":"2566:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74472,"mutability":"mutable","name":"expectedCommitment","nameLocation":"2602:18:101","nodeType":"VariableDeclaration","scope":74474,"src":"2596:24:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":74471,"name":"bytes","nodeType":"ElementaryTypeName","src":"2596:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2565:56:101"}},{"id":74477,"nodeType":"ErrorDefinition","src":"2695:25:101","nodes":[],"documentation":{"id":74475,"nodeType":"StructuredDocumentation","src":"2628:62:101","text":"@notice Error for when the call to withdraw a bond failed."},"errorSelector":"27fcd9d1","name":"WithdrawalFailed","nameLocation":"2701:16:101","parameters":{"id":74476,"nodeType":"ParameterList","parameters":[],"src":"2717:2:101"}},{"id":74482,"nodeType":"ErrorDefinition","src":"2801:50:101","nodes":[],"documentation":{"id":74478,"nodeType":"StructuredDocumentation","src":"2726:70:101","text":"@notice Error for when a the type of a given commitment is unknown"},"errorSelector":"81ff0713","name":"UnknownCommitmentType","nameLocation":"2807:21:101","parameters":{"id":74481,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74480,"mutability":"mutable","name":"commitmentType","nameLocation":"2835:14:101","nodeType":"VariableDeclaration","scope":74482,"src":"2829:20:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":74479,"name":"uint8","nodeType":"ElementaryTypeName","src":"2829:5:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"2828:22:101"}},{"id":74491,"nodeType":"ErrorDefinition","src":"2945:98:101","nodes":[],"documentation":{"id":74483,"nodeType":"StructuredDocumentation","src":"2857:83:101","text":"@notice Error for when the commitment length does not match the commitment type"},"errorSelector":"fd9a7e5b","name":"InvalidCommitmentLength","nameLocation":"2951:23:101","parameters":{"id":74490,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74485,"mutability":"mutable","name":"commitmentType","nameLocation":"2981:14:101","nodeType":"VariableDeclaration","scope":74491,"src":"2975:20:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":74484,"name":"uint8","nodeType":"ElementaryTypeName","src":"2975:5:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"},{"constant":false,"id":74487,"mutability":"mutable","name":"expectedLength","nameLocation":"3005:14:101","nodeType":"VariableDeclaration","scope":74491,"src":"2997:22:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74486,"name":"uint256","nodeType":"ElementaryTypeName","src":"2997:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74489,"mutability":"mutable","name":"actualLength","nameLocation":"3029:12:101","nodeType":"VariableDeclaration","scope":74491,"src":"3021:20:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74488,"name":"uint256","nodeType":"ElementaryTypeName","src":"3021:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2974:68:101"}},{"id":74501,"nodeType":"EventDefinition","src":"3350:134:101","nodes":[],"anonymous":false,"documentation":{"id":74492,"nodeType":"StructuredDocumentation","src":"3049:296:101","text":"@notice An event that is emitted when the status of a challenge changes.\n @param challengedCommitment The commitment that is being challenged.\n @param challengedBlockNumber The block number at which the commitment was made.\n @param status The new status of the challenge."},"eventSelector":"c5d8c630ba2fdacb1db24c4599df78c7fb8cf97b5aecde34939597f6697bb1ad","name":"ChallengeStatusChanged","nameLocation":"3356:22:101","parameters":{"id":74500,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74494,"indexed":true,"mutability":"mutable","name":"challengedBlockNumber","nameLocation":"3404:21:101","nodeType":"VariableDeclaration","scope":74501,"src":"3388:37:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74493,"name":"uint256","nodeType":"ElementaryTypeName","src":"3388:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74496,"indexed":false,"mutability":"mutable","name":"challengedCommitment","nameLocation":"3433:20:101","nodeType":"VariableDeclaration","scope":74501,"src":"3427:26:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":74495,"name":"bytes","nodeType":"ElementaryTypeName","src":"3427:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74499,"indexed":false,"mutability":"mutable","name":"status","nameLocation":"3471:6:101","nodeType":"VariableDeclaration","scope":74501,"src":"3455:22:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"},"typeName":{"id":74498,"nodeType":"UserDefinedTypeName","pathNode":{"id":74497,"name":"ChallengeStatus","nodeType":"IdentifierPath","referencedDeclaration":74427,"src":"3455:15:101"},"referencedDeclaration":74427,"src":"3455:15:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"visibility":"internal"}],"src":"3378:105:101"}},{"id":74506,"nodeType":"EventDefinition","src":"3592:55:101","nodes":[],"anonymous":false,"documentation":{"id":74502,"nodeType":"StructuredDocumentation","src":"3490:97:101","text":"@notice An event that is emitted when the bond size required to initiate a challenge changes."},"eventSelector":"4468d695a0389e5f9e8ef0c9aee6d84e74cc0d0e0a28c8413badb54697d1bbae","name":"RequiredBondSizeChanged","nameLocation":"3598:23:101","parameters":{"id":74505,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74504,"indexed":false,"mutability":"mutable","name":"challengeWindow","nameLocation":"3630:15:101","nodeType":"VariableDeclaration","scope":74506,"src":"3622:23:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74503,"name":"uint256","nodeType":"ElementaryTypeName","src":"3622:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3621:25:101"}},{"id":74511,"nodeType":"EventDefinition","src":"3784:72:101","nodes":[],"anonymous":false,"documentation":{"id":74507,"nodeType":"StructuredDocumentation","src":"3653:126:101","text":"@notice An event that is emitted when the percentage of the resolving cost to be refunded to the resolver\n changes."},"eventSelector":"bbd8605de8f773fedb355c2fecd4b6b2e16a10a44e6676a63b375ac8f693758d","name":"ResolverRefundPercentageChanged","nameLocation":"3790:31:101","parameters":{"id":74510,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74509,"indexed":false,"mutability":"mutable","name":"resolverRefundPercentage","nameLocation":"3830:24:101","nodeType":"VariableDeclaration","scope":74511,"src":"3822:32:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74508,"name":"uint256","nodeType":"ElementaryTypeName","src":"3822:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3821:34:101"}},{"id":74518,"nodeType":"EventDefinition","src":"3939:55:101","nodes":[],"anonymous":false,"documentation":{"id":74512,"nodeType":"StructuredDocumentation","src":"3862:72:101","text":"@notice An event that is emitted when a user's bond balance changes."},"eventSelector":"a448afda7ea1e3a7a10fcab0c29fe9a9dd85791503bf0171f281521551c7ec05","name":"BalanceChanged","nameLocation":"3945:14:101","parameters":{"id":74517,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74514,"indexed":false,"mutability":"mutable","name":"account","nameLocation":"3968:7:101","nodeType":"VariableDeclaration","scope":74518,"src":"3960:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74513,"name":"address","nodeType":"ElementaryTypeName","src":"3960:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74516,"indexed":false,"mutability":"mutable","name":"balance","nameLocation":"3985:7:101","nodeType":"VariableDeclaration","scope":74518,"src":"3977:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74515,"name":"uint256","nodeType":"ElementaryTypeName","src":"3977:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3959:34:101"}},{"id":74522,"nodeType":"VariableDeclaration","src":"4063:40:101","nodes":[],"baseFunctions":[95871],"constant":true,"documentation":{"id":74519,"nodeType":"StructuredDocumentation","src":"4000:58:101","text":"@notice Semantic version.\n @custom:semver 1.0.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"4086:7:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":74520,"name":"string","nodeType":"ElementaryTypeName","src":"4063:6:101","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"312e302e30","id":74521,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4096:7:101","typeDescriptions":{"typeIdentifier":"t_stringliteral_06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c","typeString":"literal_string \"1.0.0\""},"value":"1.0.0"},"visibility":"public"},{"id":74526,"nodeType":"VariableDeclaration","src":"4254:51:101","nodes":[],"constant":true,"documentation":{"id":74523,"nodeType":"StructuredDocumentation","src":"4110:139:101","text":"@notice The fixed cost of resolving a challenge.\n @dev The value is estimated by measuring the cost of resolving with `bytes(0)`"},"functionSelector":"95611852","mutability":"constant","name":"fixedResolutionCost","nameLocation":"4278:19:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74524,"name":"uint256","nodeType":"ElementaryTypeName","src":"4254:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3732393235","id":74525,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4300:5:101","typeDescriptions":{"typeIdentifier":"t_rational_72925_by_1","typeString":"int_const 72925"},"value":"72925"},"visibility":"public"},{"id":74530,"nodeType":"VariableDeclaration","src":"4571:54:101","nodes":[],"constant":true,"documentation":{"id":74527,"nodeType":"StructuredDocumentation","src":"4312:254:101","text":"@notice The variable cost of resolving a callenge per byte scaled by the variableResolutionCostPrecision.\n @dev upper limit; The value is estimated by measuring the cost of resolving with variable size data where each\n byte is non-zero."},"functionSelector":"23c30f59","mutability":"constant","name":"variableResolutionCost","nameLocation":"4595:22:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74528,"name":"uint256","nodeType":"ElementaryTypeName","src":"4571:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"3136363430","id":74529,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4620:5:101","typeDescriptions":{"typeIdentifier":"t_rational_16640_by_1","typeString":"int_const 16640"},"value":"16640"},"visibility":"public"},{"id":74534,"nodeType":"VariableDeclaration","src":"4692:62:101","nodes":[],"constant":true,"documentation":{"id":74531,"nodeType":"StructuredDocumentation","src":"4632:55:101","text":"@dev The precision of the variable resolution cost."},"functionSelector":"4ebaf3ce","mutability":"constant","name":"variableResolutionCostPrecision","nameLocation":"4716:31:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74532,"name":"uint256","nodeType":"ElementaryTypeName","src":"4692:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"value":{"hexValue":"31303030","id":74533,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"4750:4:101","typeDescriptions":{"typeIdentifier":"t_rational_1000_by_1","typeString":"int_const 1000"},"value":"1000"},"visibility":"public"},{"id":74537,"nodeType":"VariableDeclaration","src":"4841:30:101","nodes":[],"constant":false,"documentation":{"id":74535,"nodeType":"StructuredDocumentation","src":"4761:75:101","text":"@notice The block interval during which a commitment can be challenged."},"functionSelector":"861a1412","mutability":"mutable","name":"challengeWindow","nameLocation":"4856:15:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74536,"name":"uint256","nodeType":"ElementaryTypeName","src":"4841:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74540,"nodeType":"VariableDeclaration","src":"4955:28:101","nodes":[],"constant":false,"documentation":{"id":74538,"nodeType":"StructuredDocumentation","src":"4878:72:101","text":"@notice The block interval during which a challenge can be resolved."},"functionSelector":"21cf39ee","mutability":"mutable","name":"resolveWindow","nameLocation":"4970:13:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74539,"name":"uint256","nodeType":"ElementaryTypeName","src":"4955:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74543,"nodeType":"VariableDeclaration","src":"5047:23:101","nodes":[],"constant":false,"documentation":{"id":74541,"nodeType":"StructuredDocumentation","src":"4990:52:101","text":"@notice The amount required to post a challenge."},"functionSelector":"7099c581","mutability":"mutable","name":"bondSize","nameLocation":"5062:8:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74542,"name":"uint256","nodeType":"ElementaryTypeName","src":"5047:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74546,"nodeType":"VariableDeclaration","src":"5235:39:101","nodes":[],"constant":false,"documentation":{"id":74544,"nodeType":"StructuredDocumentation","src":"5077:153:101","text":"@notice The percentage of the resolving cost to be refunded to the resolver.\n @dev There are no decimals, ie a value of 50 corresponds to 50%."},"functionSelector":"8ecb85e1","mutability":"mutable","name":"resolverRefundPercentage","nameLocation":"5250:24:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74545,"name":"uint256","nodeType":"ElementaryTypeName","src":"5235:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":74551,"nodeType":"VariableDeclaration","src":"5361:43:101","nodes":[],"constant":false,"documentation":{"id":74547,"nodeType":"StructuredDocumentation","src":"5281:75:101","text":"@notice A mapping from addresses to their bond balance in the contract."},"functionSelector":"27e235e3","mutability":"mutable","name":"balances","nameLocation":"5396:8:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"typeName":{"id":74550,"keyType":{"id":74548,"name":"address","nodeType":"ElementaryTypeName","src":"5369:7:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"5361:27:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":74549,"name":"uint256","nodeType":"ElementaryTypeName","src":"5380:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}},"visibility":"public"},{"id":74559,"nodeType":"VariableDeclaration","src":"5508:67:101","nodes":[],"constant":false,"documentation":{"id":74552,"nodeType":"StructuredDocumentation","src":"5411:92:101","text":"@notice A mapping from challenged block numbers to challenged commitments to challenges."},"mutability":"mutable","name":"challenges","nameLocation":"5565:10:101","scope":75250,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$_$","typeString":"mapping(uint256 => mapping(bytes => struct Challenge))"},"typeName":{"id":74558,"keyType":{"id":74553,"name":"uint256","nodeType":"ElementaryTypeName","src":"5516:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"5508:47:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$_$","typeString":"mapping(uint256 => mapping(bytes => struct Challenge))"},"valueType":{"id":74557,"keyType":{"id":74554,"name":"bytes","nodeType":"ElementaryTypeName","src":"5535:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"nodeType":"Mapping","src":"5527:27:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$","typeString":"mapping(bytes => struct Challenge)"},"valueType":{"id":74556,"nodeType":"UserDefinedTypeName","pathNode":{"id":74555,"name":"Challenge","nodeType":"IdentifierPath","referencedDeclaration":74438,"src":"5544:9:101"},"referencedDeclaration":74438,"src":"5544:9:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"}}}},"visibility":"internal"},{"id":74577,"nodeType":"FunctionDefinition","src":"5796:243:101","nodes":[],"body":{"id":74576,"nodeType":"Block","src":"5831:208:101","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"hexValue":"307864456144","id":74568,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5882:6:101","typeDescriptions":{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"},"value":"0xdEaD"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_57005_by_1","typeString":"int_const 57005"}],"id":74567,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5874:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74566,"name":"address","nodeType":"ElementaryTypeName","src":"5874:7:101","typeDescriptions":{}}},"id":74569,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5874:15:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":74570,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5921:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":74571,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5952:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":74572,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5978:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},{"hexValue":"30","id":74573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6020:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":74565,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74617,"src":"5841:10:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (address,uint256,uint256,uint256,uint256)"}},"id":74574,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_owner","_challengeWindow","_resolveWindow","_bondSize","_resolverRefundPercentage"],"nodeType":"FunctionCall","src":"5841:191:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74575,"nodeType":"ExpressionStatement","src":"5841:191:101"}]},"documentation":{"id":74560,"nodeType":"StructuredDocumentation","src":"5582:209:101","text":"@notice Constructs the DataAvailabilityChallenge contract. Cannot set\n the owner to `address(0)` due to the Ownable contract's\n implementation, so set it to `address(0xdEaD)`."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":74563,"kind":"baseConstructorSpecifier","modifierName":{"id":74562,"name":"OwnableUpgradeable","nodeType":"IdentifierPath","referencedDeclaration":45173,"src":"5810:18:101"},"nodeType":"ModifierInvocation","src":"5810:20:101"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":74561,"nodeType":"ParameterList","parameters":[],"src":"5807:2:101"},"returnParameters":{"id":74564,"nodeType":"ParameterList","parameters":[],"src":"5831:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74617,"nodeType":"FunctionDefinition","src":"6389:474:101","nodes":[],"body":{"id":74616,"nodeType":"Block","src":"6614:249:101","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":74593,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45068,"src":"6624:14:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":74594,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6624:16:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74595,"nodeType":"ExpressionStatement","src":"6624:16:101"},{"expression":{"id":74598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74596,"name":"challengeWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74537,"src":"6650:15:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74597,"name":"_challengeWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74582,"src":"6668:16:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6650:34:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74599,"nodeType":"ExpressionStatement","src":"6650:34:101"},{"expression":{"id":74602,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74600,"name":"resolveWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74540,"src":"6694:13:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74601,"name":"_resolveWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74584,"src":"6710:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6694:30:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74603,"nodeType":"ExpressionStatement","src":"6694:30:101"},{"expression":{"arguments":[{"id":74605,"name":"_bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74586,"src":"6746:9:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74604,"name":"setBondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74634,"src":"6734:11:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":74606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6734:22:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74607,"nodeType":"ExpressionStatement","src":"6734:22:101"},{"expression":{"arguments":[{"id":74609,"name":"_resolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74588,"src":"6794:25:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74608,"name":"setResolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74656,"src":"6766:27:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":74610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6766:54:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74611,"nodeType":"ExpressionStatement","src":"6766:54:101"},{"expression":{"arguments":[{"id":74613,"name":"_owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74580,"src":"6849:6:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":74612,"name":"_transferOwnership","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":45167,"src":"6830:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":74614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6830:26:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74615,"nodeType":"ExpressionStatement","src":"6830:26:101"}]},"documentation":{"id":74578,"nodeType":"StructuredDocumentation","src":"6045:339:101","text":"@notice Initializes the contract.\n @param _owner The owner of the contract.\n @param _challengeWindow The block interval during which a commitment can be challenged.\n @param _resolveWindow The block interval during which a challenge can be resolved.\n @param _bondSize The amount required to post a challenge."},"functionSelector":"f92ad219","implemented":true,"kind":"function","modifiers":[{"id":74591,"kind":"modifierInvocation","modifierName":{"id":74590,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":45244,"src":"6598:11:101"},"nodeType":"ModifierInvocation","src":"6598:11:101"}],"name":"initialize","nameLocation":"6398:10:101","parameters":{"id":74589,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74580,"mutability":"mutable","name":"_owner","nameLocation":"6426:6:101","nodeType":"VariableDeclaration","scope":74617,"src":"6418:14:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":74579,"name":"address","nodeType":"ElementaryTypeName","src":"6418:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":74582,"mutability":"mutable","name":"_challengeWindow","nameLocation":"6450:16:101","nodeType":"VariableDeclaration","scope":74617,"src":"6442:24:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74581,"name":"uint256","nodeType":"ElementaryTypeName","src":"6442:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74584,"mutability":"mutable","name":"_resolveWindow","nameLocation":"6484:14:101","nodeType":"VariableDeclaration","scope":74617,"src":"6476:22:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74583,"name":"uint256","nodeType":"ElementaryTypeName","src":"6476:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74586,"mutability":"mutable","name":"_bondSize","nameLocation":"6516:9:101","nodeType":"VariableDeclaration","scope":74617,"src":"6508:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74585,"name":"uint256","nodeType":"ElementaryTypeName","src":"6508:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74588,"mutability":"mutable","name":"_resolverRefundPercentage","nameLocation":"6543:25:101","nodeType":"VariableDeclaration","scope":74617,"src":"6535:33:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74587,"name":"uint256","nodeType":"ElementaryTypeName","src":"6535:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6408:166:101"},"returnParameters":{"id":74592,"nodeType":"ParameterList","parameters":[],"src":"6614:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74634,"nodeType":"FunctionDefinition","src":"6971:143:101","nodes":[],"body":{"id":74633,"nodeType":"Block","src":"7028:86:101","nodes":[],"statements":[{"expression":{"id":74627,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74625,"name":"bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74543,"src":"7038:8:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74626,"name":"_bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74620,"src":"7049:9:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7038:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74628,"nodeType":"ExpressionStatement","src":"7038:20:101"},{"eventCall":{"arguments":[{"id":74630,"name":"_bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74620,"src":"7097:9:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74629,"name":"RequiredBondSizeChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74506,"src":"7073:23:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":74631,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7073:34:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74632,"nodeType":"EmitStatement","src":"7068:39:101"}]},"documentation":{"id":74618,"nodeType":"StructuredDocumentation","src":"6869:97:101","text":"@notice Sets the bond size.\n @param _bondSize The amount required to post a challenge."},"functionSelector":"d7d04e54","implemented":true,"kind":"function","modifiers":[{"id":74623,"kind":"modifierInvocation","modifierName":{"id":74622,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":45087,"src":"7018:9:101"},"nodeType":"ModifierInvocation","src":"7018:9:101"}],"name":"setBondSize","nameLocation":"6980:11:101","parameters":{"id":74621,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74620,"mutability":"mutable","name":"_bondSize","nameLocation":"7000:9:101","nodeType":"VariableDeclaration","scope":74634,"src":"6992:17:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74619,"name":"uint256","nodeType":"ElementaryTypeName","src":"6992:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6991:19:101"},"returnParameters":{"id":74624,"nodeType":"ParameterList","parameters":[],"src":"7028:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74656,"nodeType":"FunctionDefinition","src":"7468:294:101","nodes":[],"body":{"id":74655,"nodeType":"Block","src":"7557:205:101","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74642,"name":"_resolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74637,"src":"7571:25:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"313030","id":74643,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7599:3:101","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"7571:31:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74650,"nodeType":"IfStatement","src":"7567:127:101","trueBody":{"id":74649,"nodeType":"Block","src":"7604:90:101","statements":[{"errorCall":{"arguments":[{"id":74646,"name":"_resolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74637,"src":"7657:25:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74645,"name":"InvalidResolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74448,"src":"7625:31:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$__$","typeString":"function (uint256) pure"}},"id":74647,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7625:58:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74648,"nodeType":"RevertStatement","src":"7618:65:101"}]}},{"expression":{"id":74653,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":74651,"name":"resolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74546,"src":"7703:24:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":74652,"name":"_resolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74637,"src":"7730:25:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7703:52:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74654,"nodeType":"ExpressionStatement","src":"7703:52:101"}]},"documentation":{"id":74635,"nodeType":"StructuredDocumentation","src":"7120:343:101","text":"@notice Sets the percentage of the resolving cost to be refunded to the resolver.\n @dev The function reverts if the provided percentage is above 100, since the refund logic\n assumes a value smaller or equal to 100%.\n @param _resolverRefundPercentage The percentage of the resolving cost to be refunded to the resolver."},"functionSelector":"336409fd","implemented":true,"kind":"function","modifiers":[{"id":74640,"kind":"modifierInvocation","modifierName":{"id":74639,"name":"onlyOwner","nodeType":"IdentifierPath","referencedDeclaration":45087,"src":"7547:9:101"},"nodeType":"ModifierInvocation","src":"7547:9:101"}],"name":"setResolverRefundPercentage","nameLocation":"7477:27:101","parameters":{"id":74638,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74637,"mutability":"mutable","name":"_resolverRefundPercentage","nameLocation":"7513:25:101","nodeType":"VariableDeclaration","scope":74656,"src":"7505:33:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74636,"name":"uint256","nodeType":"ElementaryTypeName","src":"7505:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7504:35:101"},"returnParameters":{"id":74641,"nodeType":"ParameterList","parameters":[],"src":"7557:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":74664,"nodeType":"FunctionDefinition","src":"7842:53:101","nodes":[],"body":{"id":74663,"nodeType":"Block","src":"7869:26:101","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":74660,"name":"deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74686,"src":"7879:7:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":74661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7879:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74662,"nodeType":"ExpressionStatement","src":"7879:9:101"}]},"documentation":{"id":74657,"nodeType":"StructuredDocumentation","src":"7768:69:101","text":"@notice Post a bond as prerequisite for challenging a commitment."},"implemented":true,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":74658,"nodeType":"ParameterList","parameters":[],"src":"7849:2:101"},"returnParameters":{"id":74659,"nodeType":"ParameterList","parameters":[],"src":"7869:0:101"},"scope":75250,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":74686,"nodeType":"FunctionDefinition","src":"7975:147:101","nodes":[],"body":{"id":74685,"nodeType":"Block","src":"8009:113:101","nodes":[],"statements":[{"expression":{"id":74674,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":74668,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"8019:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":74671,"indexExpression":{"expression":{"id":74669,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8028:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74670,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8028:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8019:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":74672,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8043:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74673,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"8043:9:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8019:33:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74675,"nodeType":"ExpressionStatement","src":"8019:33:101"},{"eventCall":{"arguments":[{"expression":{"id":74677,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8082:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74678,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8082:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":74679,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"8094:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":74682,"indexExpression":{"expression":{"id":74680,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8103:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74681,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8103:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8094:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74676,"name":"BalanceChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74518,"src":"8067:14:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":74683,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8067:48:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74684,"nodeType":"EmitStatement","src":"8062:53:101"}]},"documentation":{"id":74665,"nodeType":"StructuredDocumentation","src":"7901:69:101","text":"@notice Post a bond as prerequisite for challenging a commitment."},"functionSelector":"d0e30db0","implemented":true,"kind":"function","modifiers":[],"name":"deposit","nameLocation":"7984:7:101","parameters":{"id":74666,"nodeType":"ParameterList","parameters":[],"src":"7991:2:101"},"returnParameters":{"id":74667,"nodeType":"ParameterList","parameters":[],"src":"8009:0:101"},"scope":75250,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":74729,"nodeType":"FunctionDefinition","src":"8177:419:101","nodes":[],"body":{"id":74728,"nodeType":"Block","src":"8206:390:101","nodes":[],"statements":[{"assignments":[74691],"declarations":[{"constant":false,"id":74691,"mutability":"mutable","name":"balance","nameLocation":"8256:7:101","nodeType":"VariableDeclaration","scope":74728,"src":"8248:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74690,"name":"uint256","nodeType":"ElementaryTypeName","src":"8248:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":74696,"initialValue":{"baseExpression":{"id":74692,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"8266:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":74695,"indexExpression":{"expression":{"id":74693,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8275:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8275:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"8266:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8248:38:101"},{"expression":{"id":74702,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":74697,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"8334:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":74700,"indexExpression":{"expression":{"id":74698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8343:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8343:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8334:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":74701,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8357:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"8334:24:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74703,"nodeType":"ExpressionStatement","src":"8334:24:101"},{"eventCall":{"arguments":[{"expression":{"id":74705,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8388:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8388:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"hexValue":"30","id":74707,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"8400:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":74704,"name":"BalanceChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74518,"src":"8373:14:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":74708,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8373:29:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74709,"nodeType":"EmitStatement","src":"8368:34:101"},{"assignments":[74711],"declarations":[{"constant":false,"id":74711,"mutability":"mutable","name":"success","nameLocation":"8461:7:101","nodeType":"VariableDeclaration","scope":74728,"src":"8456:12:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74710,"name":"bool","nodeType":"ElementaryTypeName","src":"8456:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":74720,"initialValue":{"arguments":[{"expression":{"id":74714,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8485:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"8485:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":74716,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"8497:7:101","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":74717,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8497:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":74718,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74691,"src":"8508:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":74712,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":91695,"src":"8471:8:101","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCall_$91695_$","typeString":"type(library SafeCall)"}},"id":74713,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"send","nodeType":"MemberAccess","referencedDeclaration":91628,"src":"8471:13:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256,uint256) returns (bool)"}},"id":74719,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8471:45:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"8456:60:101"},{"condition":{"id":74722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"8530:8:101","subExpression":{"id":74721,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74711,"src":"8531:7:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74727,"nodeType":"IfStatement","src":"8526:64:101","trueBody":{"id":74726,"nodeType":"Block","src":"8540:50:101","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":74723,"name":"WithdrawalFailed","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74477,"src":"8561:16:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":74724,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"8561:18:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74725,"nodeType":"RevertStatement","src":"8554:25:101"}]}}]},"documentation":{"id":74687,"nodeType":"StructuredDocumentation","src":"8128:44:101","text":"@notice Withdraw a user's unlocked bond."},"functionSelector":"3ccfd60b","implemented":true,"kind":"function","modifiers":[],"name":"withdraw","nameLocation":"8186:8:101","parameters":{"id":74688,"nodeType":"ParameterList","parameters":[],"src":"8194:2:101"},"returnParameters":{"id":74689,"nodeType":"ParameterList","parameters":[],"src":"8206:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":74751,"nodeType":"FunctionDefinition","src":"8893:212:101","nodes":[],"body":{"id":74750,"nodeType":"Block","src":"8983:122:101","nodes":[],"statements":[{"expression":{"components":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":74747,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74740,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74737,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9001:5:101","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":74738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"9001:12:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":74739,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74732,"src":"9017:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9001:37:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74741,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9042:5:101","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":74742,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"9042:12:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74745,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74743,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74732,"src":"9058:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":74744,"name":"challengeWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74537,"src":"9082:15:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9058:39:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9042:55:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"9001:96:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":74748,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"9000:98:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":74736,"id":74749,"nodeType":"Return","src":"8993:105:101"}]},"documentation":{"id":74730,"nodeType":"StructuredDocumentation","src":"8602:286:101","text":"@notice Checks if the current block is within the challenge window for a given challenged block number.\n @param challengedBlockNumber The block number at which the commitment was made.\n @return True if the current block is within the challenge window, false otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"_isInChallengeWindow","nameLocation":"8902:20:101","parameters":{"id":74733,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74732,"mutability":"mutable","name":"challengedBlockNumber","nameLocation":"8931:21:101","nodeType":"VariableDeclaration","scope":74751,"src":"8923:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74731,"name":"uint256","nodeType":"ElementaryTypeName","src":"8923:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"8922:31:101"},"returnParameters":{"id":74736,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74735,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74751,"src":"8977:4:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74734,"name":"bool","nodeType":"ElementaryTypeName","src":"8977:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"8976:6:101"},"scope":75250,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":74767,"nodeType":"FunctionDefinition","src":"9411:173:101","nodes":[],"body":{"id":74766,"nodeType":"Block","src":"9503:81:101","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74759,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"9520:5:101","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":74760,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"9520:12:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74763,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74761,"name":"challengeStartBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74754,"src":"9536:25:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":74762,"name":"resolveWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74540,"src":"9564:13:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9536:41:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9520:57:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":74758,"id":74765,"nodeType":"Return","src":"9513:64:101"}]},"documentation":{"id":74752,"nodeType":"StructuredDocumentation","src":"9111:295:101","text":"@notice Checks if the current block is within the resolve window for a given challenge start block number.\n @param challengeStartBlockNumber The block number at which the challenge was initiated.\n @return True if the current block is within the resolve window, false otherwise."},"implemented":true,"kind":"function","modifiers":[],"name":"_isInResolveWindow","nameLocation":"9420:18:101","parameters":{"id":74755,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74754,"mutability":"mutable","name":"challengeStartBlockNumber","nameLocation":"9447:25:101","nodeType":"VariableDeclaration","scope":74767,"src":"9439:33:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74753,"name":"uint256","nodeType":"ElementaryTypeName","src":"9439:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"9438:35:101"},"returnParameters":{"id":74758,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74757,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74767,"src":"9497:4:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":74756,"name":"bool","nodeType":"ElementaryTypeName","src":"9497:4:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"9496:6:101"},"scope":75250,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":74785,"nodeType":"FunctionDefinition","src":"9979:258:101","nodes":[],"body":{"id":74784,"nodeType":"Block","src":"10158:79:101","nodes":[],"statements":[{"expression":{"baseExpression":{"baseExpression":{"id":74778,"name":"challenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"10175:10:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$_$","typeString":"mapping(uint256 => mapping(bytes memory => struct Challenge storage ref))"}},"id":74780,"indexExpression":{"id":74779,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74770,"src":"10186:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10175:33:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$","typeString":"mapping(bytes memory => struct Challenge storage ref)"}},"id":74782,"indexExpression":{"id":74781,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74772,"src":"10209:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10175:55:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage","typeString":"struct Challenge storage ref"}},"functionReturnParameters":74777,"id":74783,"nodeType":"Return","src":"10168:62:101"}]},"documentation":{"id":74768,"nodeType":"StructuredDocumentation","src":"9590:384:101","text":"@notice Returns a challenge for the given block number and commitment.\n @dev Unlike with a public `challenges` mapping, we can return a Challenge struct instead of tuple.\n @param challengedBlockNumber The block number at which the commitment was made.\n @param challengedCommitment The commitment that is being challenged.\n @return The challenge struct."},"functionSelector":"848afb3d","implemented":true,"kind":"function","modifiers":[],"name":"getChallenge","nameLocation":"9988:12:101","parameters":{"id":74773,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74770,"mutability":"mutable","name":"challengedBlockNumber","nameLocation":"10018:21:101","nodeType":"VariableDeclaration","scope":74785,"src":"10010:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74769,"name":"uint256","nodeType":"ElementaryTypeName","src":"10010:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74772,"mutability":"mutable","name":"challengedCommitment","nameLocation":"10064:20:101","nodeType":"VariableDeclaration","scope":74785,"src":"10049:35:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74771,"name":"bytes","nodeType":"ElementaryTypeName","src":"10049:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10000:90:101"},"returnParameters":{"id":74777,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74776,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74785,"src":"10136:16:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_memory_ptr","typeString":"struct Challenge"},"typeName":{"id":74775,"nodeType":"UserDefinedTypeName","pathNode":{"id":74774,"name":"Challenge","nodeType":"IdentifierPath","referencedDeclaration":74438,"src":"10136:9:101"},"referencedDeclaration":74438,"src":"10136:9:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"}},"visibility":"internal"}],"src":"10135:18:101"},"scope":75250,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":74836,"nodeType":"FunctionDefinition","src":"10566:873:101","nodes":[],"body":{"id":74835,"nodeType":"Block","src":"10750:689:101","nodes":[],"statements":[{"assignments":[74798],"declarations":[{"constant":false,"id":74798,"mutability":"mutable","name":"_challenge","nameLocation":"10777:10:101","nodeType":"VariableDeclaration","scope":74835,"src":"10760:27:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_memory_ptr","typeString":"struct Challenge"},"typeName":{"id":74797,"nodeType":"UserDefinedTypeName","pathNode":{"id":74796,"name":"Challenge","nodeType":"IdentifierPath","referencedDeclaration":74438,"src":"10760:9:101"},"referencedDeclaration":74438,"src":"10760:9:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"}},"visibility":"internal"}],"id":74804,"initialValue":{"baseExpression":{"baseExpression":{"id":74799,"name":"challenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"10790:10:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$_$","typeString":"mapping(uint256 => mapping(bytes memory => struct Challenge storage ref))"}},"id":74801,"indexExpression":{"id":74800,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74788,"src":"10801:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10790:33:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$","typeString":"mapping(bytes memory => struct Challenge storage ref)"}},"id":74803,"indexExpression":{"id":74802,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74790,"src":"10824:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10790:55:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage","typeString":"struct Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"10760:85:101"},{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":74811,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74805,"name":"_challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74798,"src":"10922:10:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_memory_ptr","typeString":"struct Challenge memory"}},"id":74806,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"challenger","nodeType":"MemberAccess","referencedDeclaration":74431,"src":"10922:21:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"hexValue":"30","id":74809,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10955:1:101","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":74808,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10947:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":74807,"name":"address","nodeType":"ElementaryTypeName","src":"10947:7:101","typeDescriptions":{}}},"id":74810,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10947:10:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"10922:35:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74815,"nodeType":"IfStatement","src":"10918:77:101","trueBody":{"expression":{"expression":{"id":74812,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"10966:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":74813,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Uninitialized","nodeType":"MemberAccess","referencedDeclaration":74423,"src":"10966:29:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"functionReturnParameters":74795,"id":74814,"nodeType":"Return","src":"10959:36:101"}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74819,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74816,"name":"_challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74798,"src":"11075:10:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_memory_ptr","typeString":"struct Challenge memory"}},"id":74817,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"resolvedBlock","nodeType":"MemberAccess","referencedDeclaration":74437,"src":"11075:24:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"30","id":74818,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"11103:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"11075:29:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74823,"nodeType":"IfStatement","src":"11071:66:101","trueBody":{"expression":{"expression":{"id":74820,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"11113:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":74821,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Resolved","nodeType":"MemberAccess","referencedDeclaration":74425,"src":"11113:24:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"functionReturnParameters":74795,"id":74822,"nodeType":"Return","src":"11106:31:101"}},{"condition":{"arguments":[{"expression":{"id":74825,"name":"_challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74798,"src":"11252:10:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_memory_ptr","typeString":"struct Challenge memory"}},"id":74826,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"startBlock","nodeType":"MemberAccess","referencedDeclaration":74435,"src":"11252:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74824,"name":"_isInResolveWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74767,"src":"11233:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":74827,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11233:41:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74831,"nodeType":"IfStatement","src":"11229:76:101","trueBody":{"expression":{"expression":{"id":74828,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"11283:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":74829,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":74424,"src":"11283:22:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"functionReturnParameters":74795,"id":74830,"nodeType":"Return","src":"11276:29:101"}},{"expression":{"expression":{"id":74832,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"11409:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":74833,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Expired","nodeType":"MemberAccess","referencedDeclaration":74426,"src":"11409:23:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"functionReturnParameters":74795,"id":74834,"nodeType":"Return","src":"11402:30:101"}]},"documentation":{"id":74786,"nodeType":"StructuredDocumentation","src":"10243:318:101","text":"@notice Returns the status of a challenge for a given challenged block number and challenged commitment.\n @param challengedBlockNumber The block number at which the commitment was made.\n @param challengedCommitment The commitment that is being challenged.\n @return The status of the challenge."},"functionSelector":"79e8a8b3","implemented":true,"kind":"function","modifiers":[],"name":"getChallengeStatus","nameLocation":"10575:18:101","parameters":{"id":74791,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74788,"mutability":"mutable","name":"challengedBlockNumber","nameLocation":"10611:21:101","nodeType":"VariableDeclaration","scope":74836,"src":"10603:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74787,"name":"uint256","nodeType":"ElementaryTypeName","src":"10603:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74790,"mutability":"mutable","name":"challengedCommitment","nameLocation":"10657:20:101","nodeType":"VariableDeclaration","scope":74836,"src":"10642:35:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74789,"name":"bytes","nodeType":"ElementaryTypeName","src":"10642:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10593:90:101"},"returnParameters":{"id":74795,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74794,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74836,"src":"10729:15:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"},"typeName":{"id":74793,"nodeType":"UserDefinedTypeName","pathNode":{"id":74792,"name":"ChallengeStatus","nodeType":"IdentifierPath","referencedDeclaration":74427,"src":"10729:15:101"},"referencedDeclaration":74427,"src":"10729:15:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"visibility":"internal"}],"src":"10728:17:101"},"scope":75250,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":74853,"nodeType":"FunctionDefinition","src":"11740:134:101","nodes":[],"body":{"id":74852,"nodeType":"Block","src":"11825:49:101","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"id":74848,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74839,"src":"11855:10:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":74847,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11848:6:101","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":74846,"name":"bytes1","nodeType":"ElementaryTypeName","src":"11848:6:101","typeDescriptions":{}}},"id":74849,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11848:18:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"id":74845,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"11842:5:101","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":74844,"name":"uint8","nodeType":"ElementaryTypeName","src":"11842:5:101","typeDescriptions":{}}},"id":74850,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11842:25:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"functionReturnParameters":74843,"id":74851,"nodeType":"Return","src":"11835:32:101"}]},"documentation":{"id":74837,"nodeType":"StructuredDocumentation","src":"11445:290:101","text":"@notice Extract the commitment type from a given commitment.\n @dev The commitment type is located in the first byte of the commitment.\n @param commitment The commitment from which to extract the commitment type.\n @return The commitment type of the given commitment."},"implemented":true,"kind":"function","modifiers":[],"name":"_getCommitmentType","nameLocation":"11749:18:101","parameters":{"id":74840,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74839,"mutability":"mutable","name":"commitment","nameLocation":"11783:10:101","nodeType":"VariableDeclaration","scope":74853,"src":"11768:25:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74838,"name":"bytes","nodeType":"ElementaryTypeName","src":"11768:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11767:27:101"},"returnParameters":{"id":74843,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74842,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":74853,"src":"11818:5:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":74841,"name":"uint8","nodeType":"ElementaryTypeName","src":"11818:5:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"11817:7:101"},"scope":75250,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":74897,"nodeType":"FunctionDefinition","src":"12302:448:101","nodes":[],"body":{"id":74896,"nodeType":"Block","src":"12369:381:101","nodes":[],"statements":[{"assignments":[74860],"declarations":[{"constant":false,"id":74860,"mutability":"mutable","name":"commitmentType","nameLocation":"12385:14:101","nodeType":"VariableDeclaration","scope":74896,"src":"12379:20:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":74859,"name":"uint8","nodeType":"ElementaryTypeName","src":"12379:5:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":74864,"initialValue":{"arguments":[{"id":74862,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74856,"src":"12421:10:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":74861,"name":"_getCommitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74853,"src":"12402:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint8_$","typeString":"function (bytes calldata) pure returns (uint8)"}},"id":74863,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12402:30:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"12379:53:101"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":74871,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":74865,"name":"commitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74860,"src":"12446:14:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"id":74868,"name":"CommitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74429,"src":"12470:14:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CommitmentType_$74429_$","typeString":"type(enum CommitmentType)"}},"id":74869,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Keccak256","nodeType":"MemberAccess","referencedDeclaration":74428,"src":"12470:24:101","typeDescriptions":{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}],"id":74867,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12464:5:101","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":74866,"name":"uint8","nodeType":"ElementaryTypeName","src":"12464:5:101","typeDescriptions":{}}},"id":74870,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12464:31:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"12446:49:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74891,"nodeType":"IfStatement","src":"12442:247:101","trueBody":{"id":74890,"nodeType":"Block","src":"12497:192:101","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74875,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":74872,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74856,"src":"12515:10:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":74873,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12515:17:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"hexValue":"3333","id":74874,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12536:2:101","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"33"},"src":"12515:23:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74888,"nodeType":"IfStatement","src":"12511:148:101","trueBody":{"id":74887,"nodeType":"Block","src":"12540:119:101","statements":[{"errorCall":{"arguments":[{"arguments":[{"expression":{"id":74879,"name":"CommitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74429,"src":"12595:14:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CommitmentType_$74429_$","typeString":"type(enum CommitmentType)"}},"id":74880,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Keccak256","nodeType":"MemberAccess","referencedDeclaration":74428,"src":"12595:24:101","typeDescriptions":{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}],"id":74878,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12589:5:101","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":74877,"name":"uint8","nodeType":"ElementaryTypeName","src":"12589:5:101","typeDescriptions":{}}},"id":74881,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12589:31:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},{"hexValue":"3333","id":74882,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12622:2:101","typeDescriptions":{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},"value":"33"},{"expression":{"id":74883,"name":"commitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74856,"src":"12626:10:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":74884,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"12626:17:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_rational_33_by_1","typeString":"int_const 33"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74876,"name":"InvalidCommitmentLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74491,"src":"12565:23:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint8,uint256,uint256) pure"}},"id":74885,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12565:79:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74886,"nodeType":"RevertStatement","src":"12558:86:101"}]}},{"functionReturnParameters":74858,"id":74889,"nodeType":"Return","src":"12672:7:101"}]}},{"errorCall":{"arguments":[{"id":74893,"name":"commitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74860,"src":"12728:14:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":74892,"name":"UnknownCommitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74482,"src":"12706:21:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint8_$returns$__$","typeString":"function (uint8) pure"}},"id":74894,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12706:37:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74895,"nodeType":"RevertStatement","src":"12699:44:101"}]},"documentation":{"id":74854,"nodeType":"StructuredDocumentation","src":"11880:417:101","text":"@notice Validate that a given commitment has a known type and the expected length for this type.\n @dev The type of a commitment is stored in its first byte.\n The function reverts with `UnknownCommitmentType` if the type is not known and\n with `InvalidCommitmentLength` if the commitment has an unexpected length.\n @param commitment The commitment for which to check the type."},"functionSelector":"93fb1944","implemented":true,"kind":"function","modifiers":[],"name":"validateCommitment","nameLocation":"12311:18:101","parameters":{"id":74857,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74856,"mutability":"mutable","name":"commitment","nameLocation":"12345:10:101","nodeType":"VariableDeclaration","scope":74897,"src":"12330:25:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74855,"name":"bytes","nodeType":"ElementaryTypeName","src":"12330:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"12329:27:101"},"returnParameters":{"id":74858,"nodeType":"ParameterList","parameters":[],"src":"12369:0:101"},"scope":75250,"stateMutability":"pure","virtual":false,"visibility":"public"},{"id":74979,"nodeType":"FunctionDefinition","src":"13335:1396:101","nodes":[],"body":{"id":74978,"nodeType":"Block","src":"13439:1292:101","nodes":[],"statements":[{"expression":{"arguments":[{"id":74906,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74902,"src":"13519:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":74905,"name":"validateCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74897,"src":"13500:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (bytes calldata) pure"}},"id":74907,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13500:40:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74908,"nodeType":"ExpressionStatement","src":"13500:40:101"},{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":74909,"name":"deposit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74686,"src":"13610:7:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":74910,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13610:9:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74911,"nodeType":"ExpressionStatement","src":"13610:9:101"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":74917,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":74912,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"13679:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":74915,"indexExpression":{"expression":{"id":74913,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13688:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74914,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"13688:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13679:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":74916,"name":"bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74543,"src":"13702:8:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13679:31:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74927,"nodeType":"IfStatement","src":"13675:111:101","trueBody":{"id":74926,"nodeType":"Block","src":"13712:74:101","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":74919,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"13744:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":74922,"indexExpression":{"expression":{"id":74920,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13753:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74921,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"13753:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13744:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":74923,"name":"bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74543,"src":"13766:8:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74918,"name":"BondTooLow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74455,"src":"13733:10:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256) pure"}},"id":74924,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13733:42:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74925,"nodeType":"RevertStatement","src":"13726:49:101"}]}},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"},"id":74934,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":74929,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74900,"src":"13879:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":74930,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74902,"src":"13902:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":74928,"name":"getChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74836,"src":"13860:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_enum$_ChallengeStatus_$74427_$","typeString":"function (uint256,bytes calldata) view returns (enum ChallengeStatus)"}},"id":74931,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13860:63:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":74932,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"13927:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":74933,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Uninitialized","nodeType":"MemberAccess","referencedDeclaration":74423,"src":"13927:29:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"src":"13860:96:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74939,"nodeType":"IfStatement","src":"13856:151:101","trueBody":{"id":74938,"nodeType":"Block","src":"13958:49:101","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":74935,"name":"ChallengeExists","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74458,"src":"13979:15:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":74936,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13979:17:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74937,"nodeType":"RevertStatement","src":"13972:24:101"}]}},{"condition":{"id":74943,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"14088:44:101","subExpression":{"arguments":[{"id":74941,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74900,"src":"14110:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":74940,"name":"_isInChallengeWindow","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74751,"src":"14089:20:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$returns$_t_bool_$","typeString":"function (uint256) view returns (bool)"}},"id":74942,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14089:43:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":74948,"nodeType":"IfStatement","src":"14084:106:101","trueBody":{"id":74947,"nodeType":"Block","src":"14134:56:101","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":74944,"name":"ChallengeWindowNotOpen","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74467,"src":"14155:22:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":74945,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14155:24:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74946,"nodeType":"RevertStatement","src":"14148:31:101"}]}},{"expression":{"id":74954,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":74949,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"14239:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":74952,"indexExpression":{"expression":{"id":74950,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14248:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74951,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"14248:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14239:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":74953,"name":"bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74543,"src":"14263:8:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14239:32:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":74955,"nodeType":"ExpressionStatement","src":"14239:32:101"},{"expression":{"id":74969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":74956,"name":"challenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"14369:10:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$_$","typeString":"mapping(uint256 => mapping(bytes memory => struct Challenge storage ref))"}},"id":74959,"indexExpression":{"id":74957,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74900,"src":"14380:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14369:33:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$","typeString":"mapping(bytes memory => struct Challenge storage ref)"}},"id":74960,"indexExpression":{"id":74958,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74902,"src":"14403:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14369:55:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage","typeString":"struct Challenge storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":74962,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14463:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":74963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"14463:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":74964,"name":"bondSize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74543,"src":"14487:8:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":74965,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"14509:5:101","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":74966,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"14509:12:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"30","id":74967,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"14538:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":74961,"name":"Challenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74438,"src":"14439:9:101","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_Challenge_$74438_storage_ptr_$","typeString":"type(struct Challenge storage pointer)"}},"id":74968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"names":["challenger","lockedBond","startBlock","resolvedBlock"],"nodeType":"FunctionCall","src":"14439:103:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_memory_ptr","typeString":"struct Challenge memory"}},"src":"14369:173:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage","typeString":"struct Challenge storage ref"}},"id":74970,"nodeType":"ExpressionStatement","src":"14369:173:101"},{"eventCall":{"arguments":[{"id":74972,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74900,"src":"14656:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":74973,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74902,"src":"14679:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":74974,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"14701:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":74975,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":74424,"src":"14701:22:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}],"id":74971,"name":"ChallengeStatusChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74501,"src":"14633:22:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ChallengeStatus_$74427_$returns$__$","typeString":"function (uint256,bytes memory,enum ChallengeStatus)"}},"id":74976,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14633:91:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74977,"nodeType":"EmitStatement","src":"14628:96:101"}]},"documentation":{"id":74898,"nodeType":"StructuredDocumentation","src":"12756:574:101","text":"@notice Challenge a commitment at a given block number.\n @dev The block number parameter is necessary for the contract to verify the challenge window,\n since the contract cannot access the block number of the commitment.\n The function reverts if the commitment type (first byte) is unknown,\n if the caller does not have a bond or if the challenge already exists.\n @param challengedBlockNumber The block number at which the commitment was made.\n @param challengedCommitment The commitment that is being challenged."},"functionSelector":"a03aafbf","implemented":true,"kind":"function","modifiers":[],"name":"challenge","nameLocation":"13344:9:101","parameters":{"id":74903,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74900,"mutability":"mutable","name":"challengedBlockNumber","nameLocation":"13362:21:101","nodeType":"VariableDeclaration","scope":74979,"src":"13354:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74899,"name":"uint256","nodeType":"ElementaryTypeName","src":"13354:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74902,"mutability":"mutable","name":"challengedCommitment","nameLocation":"13400:20:101","nodeType":"VariableDeclaration","scope":74979,"src":"13385:35:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74901,"name":"bytes","nodeType":"ElementaryTypeName","src":"13385:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13353:68:101"},"returnParameters":{"id":74904,"nodeType":"ParameterList","parameters":[],"src":"13439:0:101"},"scope":75250,"stateMutability":"payable","virtual":false,"visibility":"external"},{"id":75075,"nodeType":"FunctionDefinition","src":"15428:1683:101","nodes":[],"body":{"id":75074,"nodeType":"Block","src":"15592:1519:101","nodes":[],"statements":[{"expression":{"arguments":[{"id":74990,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74984,"src":"15672:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":74989,"name":"validateCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74897,"src":"15653:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$__$","typeString":"function (bytes calldata) pure"}},"id":74991,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15653:40:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":74992,"nodeType":"ExpressionStatement","src":"15653:40:101"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"},"id":74999,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":74994,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74982,"src":"15828:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":74995,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74984,"src":"15851:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":74993,"name":"getChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74836,"src":"15809:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_enum$_ChallengeStatus_$74427_$","typeString":"function (uint256,bytes calldata) view returns (enum ChallengeStatus)"}},"id":74996,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15809:63:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":74997,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"15876:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":74998,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Active","nodeType":"MemberAccess","referencedDeclaration":74424,"src":"15876:22:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"src":"15809:89:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75004,"nodeType":"IfStatement","src":"15805:147:101","trueBody":{"id":75003,"nodeType":"Block","src":"15900:52:101","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75000,"name":"ChallengeNotActive","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74461,"src":"15921:18:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":75001,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15921:20:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75002,"nodeType":"RevertStatement","src":"15914:27:101"}]}},{"assignments":[75006],"declarations":[{"constant":false,"id":75006,"mutability":"mutable","name":"commitmentType","nameLocation":"16041:14:101","nodeType":"VariableDeclaration","scope":75074,"src":"16035:20:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":75005,"name":"uint8","nodeType":"ElementaryTypeName","src":"16035:5:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"id":75010,"initialValue":{"arguments":[{"id":75008,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74984,"src":"16077:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":75007,"name":"_getCommitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74853,"src":"16058:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_calldata_ptr_$returns$_t_uint8_$","typeString":"function (bytes calldata) pure returns (uint8)"}},"id":75009,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16058:40:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"VariableDeclarationStatement","src":"16035:63:101"},{"assignments":[75012],"declarations":[{"constant":false,"id":75012,"mutability":"mutable","name":"computedCommitment","nameLocation":"16121:18:101","nodeType":"VariableDeclaration","scope":75074,"src":"16108:31:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75011,"name":"bytes","nodeType":"ElementaryTypeName","src":"16108:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":75013,"nodeType":"VariableDeclarationStatement","src":"16108:31:101"},{"condition":{"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"id":75020,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75014,"name":"commitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75006,"src":"16153:14:101","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"id":75017,"name":"CommitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74429,"src":"16177:14:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CommitmentType_$74429_$","typeString":"type(enum CommitmentType)"}},"id":75018,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Keccak256","nodeType":"MemberAccess","referencedDeclaration":74428,"src":"16177:24:101","typeDescriptions":{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}],"id":75016,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"16171:5:101","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":75015,"name":"uint8","nodeType":"ElementaryTypeName","src":"16171:5:101","typeDescriptions":{}}},"id":75019,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16171:31:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"src":"16153:49:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75028,"nodeType":"IfStatement","src":"16149:140:101","trueBody":{"id":75027,"nodeType":"Block","src":"16204:85:101","statements":[{"expression":{"id":75025,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75021,"name":"computedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75012,"src":"16218:18:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":75023,"name":"resolveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"16266:11:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":75022,"name":"computeCommitmentKeccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75275,"src":"16239:26:101","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes memory) pure returns (bytes memory)"}},"id":75024,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16239:39:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"src":"16218:60:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":75026,"nodeType":"ExpressionStatement","src":"16218:60:101"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"id":75035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":75030,"name":"computedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75012,"src":"16399:18:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75029,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16389:9:101","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16389:29:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":75033,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74984,"src":"16432:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":75032,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"16422:9:101","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75034,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16422:31:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"src":"16389:64:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75042,"nodeType":"IfStatement","src":"16385:160:101","trueBody":{"id":75041,"nodeType":"Block","src":"16455:90:101","statements":[{"errorCall":{"arguments":[{"id":75037,"name":"computedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75012,"src":"16493:18:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":75038,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74984,"src":"16513:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":75036,"name":"InvalidInputData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74474,"src":"16476:16:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (bytes memory,bytes memory) pure"}},"id":75039,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16476:58:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75040,"nodeType":"RevertStatement","src":"16469:65:101"}]}},{"assignments":[75045],"declarations":[{"constant":false,"id":75045,"mutability":"mutable","name":"activeChallenge","nameLocation":"16643:15:101","nodeType":"VariableDeclaration","scope":75074,"src":"16625:33:101","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"},"typeName":{"id":75044,"nodeType":"UserDefinedTypeName","pathNode":{"id":75043,"name":"Challenge","nodeType":"IdentifierPath","referencedDeclaration":74438,"src":"16625:9:101"},"referencedDeclaration":74438,"src":"16625:9:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"}},"visibility":"internal"}],"id":75051,"initialValue":{"baseExpression":{"baseExpression":{"id":75046,"name":"challenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"16661:10:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$_$","typeString":"mapping(uint256 => mapping(bytes memory => struct Challenge storage ref))"}},"id":75048,"indexExpression":{"id":75047,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74982,"src":"16672:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16661:33:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$","typeString":"mapping(bytes memory => struct Challenge storage ref)"}},"id":75050,"indexExpression":{"id":75049,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74984,"src":"16695:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16661:55:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage","typeString":"struct Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"16625:91:101"},{"expression":{"id":75057,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75052,"name":"activeChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75045,"src":"16726:15:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75054,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"resolvedBlock","nodeType":"MemberAccess","referencedDeclaration":74437,"src":"16726:29:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":75055,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"16758:5:101","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":75056,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"number","nodeType":"MemberAccess","src":"16758:12:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16726:44:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75058,"nodeType":"ExpressionStatement","src":"16726:44:101"},{"eventCall":{"arguments":[{"id":75060,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74982,"src":"16886:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75061,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74984,"src":"16909:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":75062,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"16931:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":75063,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Resolved","nodeType":"MemberAccess","referencedDeclaration":74425,"src":"16931:24:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}],"id":75059,"name":"ChallengeStatusChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74501,"src":"16863:22:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_ChallengeStatus_$74427_$returns$__$","typeString":"function (uint256,bytes memory,enum ChallengeStatus)"}},"id":75064,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"16863:93:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75065,"nodeType":"EmitStatement","src":"16858:98:101"},{"expression":{"arguments":[{"id":75067,"name":"activeChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75045,"src":"17056:15:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},{"expression":{"id":75068,"name":"resolveData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74986,"src":"17073:11:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"id":75069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"length","nodeType":"MemberAccess","src":"17073:18:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":75070,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17093:3:101","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":75071,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"17093:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":75066,"name":"_distributeBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75196,"src":"17040:15:101","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_struct$_Challenge_$74438_storage_ptr_$_t_uint256_$_t_address_$returns$__$","typeString":"function (struct Challenge storage pointer,uint256,address)"}},"id":75072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17040:64:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75073,"nodeType":"ExpressionStatement","src":"17040:64:101"}]},"documentation":{"id":74980,"nodeType":"StructuredDocumentation","src":"14737:686:101","text":"@notice Resolve a challenge by providing the data corresponding to the challenged commitment.\n @dev The function computes a commitment from the provided resolveData and verifies that it matches the\n challenged commitment.\n It reverts if the commitment type is unknown, if the data doesn't match the commitment,\n if the challenge is not active or if the resolve window is not open.\n @param challengedBlockNumber The block number at which the commitment was made.\n @param challengedCommitment The challenged commitment that is being resolved.\n @param resolveData The pre-image data corresponding to the challenged commitment."},"functionSelector":"7ae929d9","implemented":true,"kind":"function","modifiers":[],"name":"resolve","nameLocation":"15437:7:101","parameters":{"id":74987,"nodeType":"ParameterList","parameters":[{"constant":false,"id":74982,"mutability":"mutable","name":"challengedBlockNumber","nameLocation":"15462:21:101","nodeType":"VariableDeclaration","scope":75075,"src":"15454:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":74981,"name":"uint256","nodeType":"ElementaryTypeName","src":"15454:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":74984,"mutability":"mutable","name":"challengedCommitment","nameLocation":"15508:20:101","nodeType":"VariableDeclaration","scope":75075,"src":"15493:35:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74983,"name":"bytes","nodeType":"ElementaryTypeName","src":"15493:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":74986,"mutability":"mutable","name":"resolveData","nameLocation":"15553:11:101","nodeType":"VariableDeclaration","scope":75075,"src":"15538:26:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":74985,"name":"bytes","nodeType":"ElementaryTypeName","src":"15538:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15444:126:101"},"returnParameters":{"id":74988,"nodeType":"ParameterList","parameters":[],"src":"15592:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"external"},{"id":75196,"nodeType":"FunctionDefinition","src":"18096:1451:101","nodes":[],"body":{"id":75195,"nodeType":"Block","src":"18209:1338:101","nodes":[],"statements":[{"assignments":[75087],"declarations":[{"constant":false,"id":75087,"mutability":"mutable","name":"lockedBond","nameLocation":"18227:10:101","nodeType":"VariableDeclaration","scope":75195,"src":"18219:18:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75086,"name":"uint256","nodeType":"ElementaryTypeName","src":"18219:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75090,"initialValue":{"expression":{"id":75088,"name":"resolvedChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75079,"src":"18240:17:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75089,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lockedBond","nodeType":"MemberAccess","referencedDeclaration":74433,"src":"18240:28:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18219:49:101"},{"assignments":[75092],"declarations":[{"constant":false,"id":75092,"mutability":"mutable","name":"challenger","nameLocation":"18286:10:101","nodeType":"VariableDeclaration","scope":75195,"src":"18278:18:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75091,"name":"address","nodeType":"ElementaryTypeName","src":"18278:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"id":75095,"initialValue":{"expression":{"id":75093,"name":"resolvedChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75079,"src":"18299:17:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75094,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"challenger","nodeType":"MemberAccess","referencedDeclaration":74431,"src":"18299:28:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"VariableDeclarationStatement","src":"18278:49:101"},{"assignments":[75097],"declarations":[{"constant":false,"id":75097,"mutability":"mutable","name":"resolutionCost","nameLocation":"18436:14:101","nodeType":"VariableDeclaration","scope":75195,"src":"18428:22:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75096,"name":"uint256","nodeType":"ElementaryTypeName","src":"18428:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75109,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75108,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75098,"name":"fixedResolutionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74526,"src":"18467:19:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75103,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75099,"name":"preImageLength","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75081,"src":"18489:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":75100,"name":"variableResolutionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74530,"src":"18506:22:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18489:39:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":75102,"name":"variableResolutionCostPrecision","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74534,"src":"18531:31:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18489:73:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18467:95:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":75105,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"18453:119:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":75106,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"18575:5:101","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":75107,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"basefee","nodeType":"MemberAccess","src":"18575:13:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18453:135:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"18428:160:101"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75112,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75110,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"18674:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":75111,"name":"resolutionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75097,"src":"18687:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18674:27:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75133,"nodeType":"IfStatement","src":"18670:217:101","trueBody":{"id":75132,"nodeType":"Block","src":"18703:184:101","statements":[{"expression":{"id":75119,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75113,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"18717:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75115,"indexExpression":{"id":75114,"name":"challenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"18726:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"18717:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75118,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75116,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"18741:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":75117,"name":"resolutionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75097,"src":"18754:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18741:27:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18717:51:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75120,"nodeType":"ExpressionStatement","src":"18717:51:101"},{"expression":{"id":75123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75121,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"18782:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75122,"name":"resolutionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75097,"src":"18795:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18782:27:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75124,"nodeType":"ExpressionStatement","src":"18782:27:101"},{"eventCall":{"arguments":[{"id":75126,"name":"challenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"18843:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":75127,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"18855:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75129,"indexExpression":{"id":75128,"name":"challenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75092,"src":"18864:10:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18855:20:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75125,"name":"BalanceChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74518,"src":"18828:14:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":75130,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18828:48:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75131,"nodeType":"EmitStatement","src":"18823:53:101"}]}},{"assignments":[75135],"declarations":[{"constant":false,"id":75135,"mutability":"mutable","name":"resolverRefund","nameLocation":"19011:14:101","nodeType":"VariableDeclaration","scope":75195,"src":"19003:22:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75134,"name":"uint256","nodeType":"ElementaryTypeName","src":"19003:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":75141,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75140,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75138,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75136,"name":"resolutionCost","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75097,"src":"19028:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":75137,"name":"resolverRefundPercentage","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74546,"src":"19045:24:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19028:41:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"hexValue":"313030","id":75139,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19072:3:101","typeDescriptions":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"value":"100"},"src":"19028:47:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19003:72:101"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75144,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75142,"name":"resolverRefund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75135,"src":"19089:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":75143,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"19106:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19089:27:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75150,"nodeType":"IfStatement","src":"19085:85:101","trueBody":{"id":75149,"nodeType":"Block","src":"19118:52:101","statements":[{"expression":{"id":75147,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75145,"name":"resolverRefund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75135,"src":"19132:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":75146,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"19149:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19132:27:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75148,"nodeType":"ExpressionStatement","src":"19132:27:101"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75151,"name":"resolverRefund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75135,"src":"19183:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":75152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19200:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19183:18:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75172,"nodeType":"IfStatement","src":"19179:190:101","trueBody":{"id":75171,"nodeType":"Block","src":"19203:166:101","statements":[{"expression":{"id":75158,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75154,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"19217:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75156,"indexExpression":{"id":75155,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75083,"src":"19226:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"19217:18:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":75157,"name":"resolverRefund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75135,"src":"19239:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19217:36:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75159,"nodeType":"ExpressionStatement","src":"19217:36:101"},{"expression":{"id":75162,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":75160,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"19267:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"-=","rightHandSide":{"id":75161,"name":"resolverRefund","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75135,"src":"19281:14:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19267:28:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75163,"nodeType":"ExpressionStatement","src":"19267:28:101"},{"eventCall":{"arguments":[{"id":75165,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75083,"src":"19329:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":75166,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"19339:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75168,"indexExpression":{"id":75167,"name":"resolver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75083,"src":"19348:8:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19339:18:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75164,"name":"BalanceChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74518,"src":"19314:14:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":75169,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19314:44:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75170,"nodeType":"EmitStatement","src":"19309:49:101"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":75175,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":75173,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"19418:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"hexValue":"30","id":75174,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19431:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19418:14:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75188,"nodeType":"IfStatement","src":"19414:85:101","trueBody":{"id":75187,"nodeType":"Block","src":"19434:65:101","statements":[{"expression":{"arguments":[{"id":75184,"name":"lockedBond","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75087,"src":"19477:10:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"arguments":[{"hexValue":"30","id":75180,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19464:1:101","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":75179,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19456:7:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":75178,"name":"address","nodeType":"ElementaryTypeName","src":"19456:7:101","typeDescriptions":{}}},"id":75181,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19456:10:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":75177,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"19448:8:101","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":75176,"name":"address","nodeType":"ElementaryTypeName","src":"19448:8:101","stateMutability":"payable","typeDescriptions":{}}},"id":75182,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19448:19:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}},"id":75183,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"transfer","nodeType":"MemberAccess","src":"19448:28:101","typeDescriptions":{"typeIdentifier":"t_function_transfer_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":75185,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19448:40:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75186,"nodeType":"ExpressionStatement","src":"19448:40:101"}]}},{"expression":{"id":75193,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75189,"name":"resolvedChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75079,"src":"19508:17:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75191,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"lockedBond","nodeType":"MemberAccess","referencedDeclaration":74433,"src":"19508:28:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":75192,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19539:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"19508:32:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75194,"nodeType":"ExpressionStatement","src":"19508:32:101"}]},"documentation":{"id":75076,"nodeType":"StructuredDocumentation","src":"17117:974:101","text":"@notice Distribute the bond of a resolved challenge among the resolver, challenger and address(0).\n The challenger is refunded the bond amount exceeding the resolution cost.\n The resolver is refunded a percentage of the resolution cost based on the `resolverRefundPercentage`\n state variable.\n The remaining bond is burned by sending it to address(0).\n @dev The resolution cost is approximated based on a fixed cost and variable cost depending on the size of the\n pre-image.\n The real resolution cost might vary, because calldata is priced differently for zero and non-zero bytes.\n Computing the exact cost adds too much gas overhead to be worth the tradeoff.\n @param resolvedChallenge The resolved challenge in storage.\n @param preImageLength The size of the pre-image used to resolve the challenge.\n @param resolver The address of the resolver."},"implemented":true,"kind":"function","modifiers":[],"name":"_distributeBond","nameLocation":"18105:15:101","parameters":{"id":75084,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75079,"mutability":"mutable","name":"resolvedChallenge","nameLocation":"18139:17:101","nodeType":"VariableDeclaration","scope":75196,"src":"18121:35:101","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"},"typeName":{"id":75078,"nodeType":"UserDefinedTypeName","pathNode":{"id":75077,"name":"Challenge","nodeType":"IdentifierPath","referencedDeclaration":74438,"src":"18121:9:101"},"referencedDeclaration":74438,"src":"18121:9:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"}},"visibility":"internal"},{"constant":false,"id":75081,"mutability":"mutable","name":"preImageLength","nameLocation":"18166:14:101","nodeType":"VariableDeclaration","scope":75196,"src":"18158:22:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75080,"name":"uint256","nodeType":"ElementaryTypeName","src":"18158:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75083,"mutability":"mutable","name":"resolver","nameLocation":"18190:8:101","nodeType":"VariableDeclaration","scope":75196,"src":"18182:16:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":75082,"name":"address","nodeType":"ElementaryTypeName","src":"18182:7:101","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18120:79:101"},"returnParameters":{"id":75085,"nodeType":"ParameterList","parameters":[],"src":"18209:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":75249,"nodeType":"FunctionDefinition","src":"19935:773:101","nodes":[],"body":{"id":75248,"nodeType":"Block","src":"20032:676:101","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"},"id":75210,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":75205,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75199,"src":"20162:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":75206,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75201,"src":"20185:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":75204,"name":"getChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74836,"src":"20143:18:101","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_bytes_calldata_ptr_$returns$_t_enum$_ChallengeStatus_$74427_$","typeString":"function (uint256,bytes calldata) view returns (enum ChallengeStatus)"}},"id":75207,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20143:63:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":75208,"name":"ChallengeStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74427,"src":"20210:15:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_ChallengeStatus_$74427_$","typeString":"type(enum ChallengeStatus)"}},"id":75209,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Expired","nodeType":"MemberAccess","referencedDeclaration":74426,"src":"20210:23:101","typeDescriptions":{"typeIdentifier":"t_enum$_ChallengeStatus_$74427","typeString":"enum ChallengeStatus"}},"src":"20143:90:101","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":75215,"nodeType":"IfStatement","src":"20139:149:101","trueBody":{"id":75214,"nodeType":"Block","src":"20235:53:101","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":75211,"name":"ChallengeNotExpired","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74464,"src":"20256:19:101","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$__$","typeString":"function () pure"}},"id":75212,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20256:21:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75213,"nodeType":"RevertStatement","src":"20249:28:101"}]}},{"assignments":[75218],"declarations":[{"constant":false,"id":75218,"mutability":"mutable","name":"expiredChallenge","nameLocation":"20373:16:101","nodeType":"VariableDeclaration","scope":75248,"src":"20355:34:101","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"},"typeName":{"id":75217,"nodeType":"UserDefinedTypeName","pathNode":{"id":75216,"name":"Challenge","nodeType":"IdentifierPath","referencedDeclaration":74438,"src":"20355:9:101"},"referencedDeclaration":74438,"src":"20355:9:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge"}},"visibility":"internal"}],"id":75224,"initialValue":{"baseExpression":{"baseExpression":{"id":75219,"name":"challenges","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74559,"src":"20392:10:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$_$","typeString":"mapping(uint256 => mapping(bytes memory => struct Challenge storage ref))"}},"id":75221,"indexExpression":{"id":75220,"name":"challengedBlockNumber","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75199,"src":"20403:21:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20392:33:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_bytes_memory_ptr_$_t_struct$_Challenge_$74438_storage_$","typeString":"mapping(bytes memory => struct Challenge storage ref)"}},"id":75223,"indexExpression":{"id":75222,"name":"challengedCommitment","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75201,"src":"20426:20:101","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20392:55:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage","typeString":"struct Challenge storage ref"}},"nodeType":"VariableDeclarationStatement","src":"20355:92:101"},{"expression":{"id":75231,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":75225,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"20457:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75228,"indexExpression":{"expression":{"id":75226,"name":"expiredChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75218,"src":"20466:16:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75227,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"challenger","nodeType":"MemberAccess","referencedDeclaration":74431,"src":"20466:27:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"20457:37:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":75229,"name":"expiredChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75218,"src":"20498:16:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75230,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"lockedBond","nodeType":"MemberAccess","referencedDeclaration":74433,"src":"20498:27:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"20457:68:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75232,"nodeType":"ExpressionStatement","src":"20457:68:101"},{"expression":{"id":75237,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":75233,"name":"expiredChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75218,"src":"20535:16:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75235,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberName":"lockedBond","nodeType":"MemberAccess","referencedDeclaration":74433,"src":"20535:27:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":75236,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"20565:1:101","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"20535:31:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":75238,"nodeType":"ExpressionStatement","src":"20535:31:101"},{"eventCall":{"arguments":[{"expression":{"id":75240,"name":"expiredChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75218,"src":"20634:16:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75241,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"challenger","nodeType":"MemberAccess","referencedDeclaration":74431,"src":"20634:27:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"baseExpression":{"id":75242,"name":"balances","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74551,"src":"20663:8:101","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":75245,"indexExpression":{"expression":{"id":75243,"name":"expiredChallenge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75218,"src":"20672:16:101","typeDescriptions":{"typeIdentifier":"t_struct$_Challenge_$74438_storage_ptr","typeString":"struct Challenge storage pointer"}},"id":75244,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberName":"challenger","nodeType":"MemberAccess","referencedDeclaration":74431,"src":"20672:27:101","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"20663:37:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":75239,"name":"BalanceChanged","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74518,"src":"20619:14:101","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":75246,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20619:82:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":75247,"nodeType":"EmitStatement","src":"20614:87:101"}]},"documentation":{"id":75197,"nodeType":"StructuredDocumentation","src":"19553:377:101","text":"@notice Unlock the bond associated wth an expired challenge.\n @dev The function reverts if the challenge is not expired.\n If the expiration is successful, the challenger's bond is unlocked.\n @param challengedBlockNumber The block number at which the commitment was made.\n @param challengedCommitment The commitment that is being challenged."},"functionSelector":"93988233","implemented":true,"kind":"function","modifiers":[],"name":"unlockBond","nameLocation":"19944:10:101","parameters":{"id":75202,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75199,"mutability":"mutable","name":"challengedBlockNumber","nameLocation":"19963:21:101","nodeType":"VariableDeclaration","scope":75249,"src":"19955:29:101","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":75198,"name":"uint256","nodeType":"ElementaryTypeName","src":"19955:7:101","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":75201,"mutability":"mutable","name":"challengedCommitment","nameLocation":"20001:20:101","nodeType":"VariableDeclaration","scope":75249,"src":"19986:35:101","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":75200,"name":"bytes","nodeType":"ElementaryTypeName","src":"19986:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"19954:68:101"},"returnParameters":{"id":75203,"nodeType":"ParameterList","parameters":[],"src":"20032:0:101"},"scope":75250,"stateMutability":"nonpayable","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":74440,"name":"OwnableUpgradeable","nodeType":"IdentifierPath","referencedDeclaration":45173,"src":"1612:18:101"},"id":74441,"nodeType":"InheritanceSpecifier","src":"1612:18:101"},{"baseName":{"id":74442,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":95872,"src":"1632:7:101"},"id":74443,"nodeType":"InheritanceSpecifier","src":"1632:7:101"}],"canonicalName":"DataAvailabilityChallenge","contractDependencies":[],"contractKind":"contract","documentation":{"id":74439,"nodeType":"StructuredDocumentation","src":"890:684:101","text":"@title DataAvailabilityChallenge\n @notice This contract enables data availability of a data commitment at a given block number to be challenged.\n To challenge a commitment, the challenger must first post a bond (bondSize).\n Challenging a commitment is only possible within a certain block interval (challengeWindow) after the\n commitment was made.\n If the challenge is not resolved within a certain block interval (resolveWindow), the challenge can be\n expired.\n If a challenge is expired, the challenger's bond is unlocked and the challenged commitment is added to the\n chain of expired challenges."},"fullyImplemented":true,"linearizedBaseContracts":[75250,95872,45173,45609,45324],"name":"DataAvailabilityChallenge","nameLocation":"1583:25:101","scope":75276,"usedErrors":[74448,74455,74458,74461,74464,74467,74474,74477,74482,74491]},{"id":75275,"nodeType":"FunctionDefinition","src":"20899:169:101","nodes":[],"body":{"id":75274,"nodeType":"Block","src":"20982:86:101","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"expression":{"id":75265,"name":"CommitmentType","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":74429,"src":"21021:14:101","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_CommitmentType_$74429_$","typeString":"type(enum CommitmentType)"}},"id":75266,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"Keccak256","nodeType":"MemberAccess","referencedDeclaration":74428,"src":"21021:24:101","typeDescriptions":{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_CommitmentType_$74429","typeString":"enum CommitmentType"}],"id":75264,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21015:5:101","typeDescriptions":{"typeIdentifier":"t_type$_t_uint8_$","typeString":"type(uint8)"},"typeName":{"id":75263,"name":"uint8","nodeType":"ElementaryTypeName","src":"21015:5:101","typeDescriptions":{}}},"id":75267,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21015:31:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":75262,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"21008:6:101","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes1_$","typeString":"type(bytes1)"},"typeName":{"id":75261,"name":"bytes1","nodeType":"ElementaryTypeName","src":"21008:6:101","typeDescriptions":{}}},"id":75268,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21008:39:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes1","typeString":"bytes1"}},{"arguments":[{"id":75270,"name":"data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":75253,"src":"21059:4:101","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":75269,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"21049:9:101","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":75271,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21049:15:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"expression":{"id":75259,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"20995:5:101","typeDescriptions":{"typeIdentifier":"t_type$_t_bytes_storage_ptr_$","typeString":"type(bytes storage pointer)"},"typeName":{"id":75258,"name":"bytes","nodeType":"ElementaryTypeName","src":"20995:5:101","typeDescriptions":{}}},"id":75260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"concat","nodeType":"MemberAccess","src":"20995:12:101","typeDescriptions":{"typeIdentifier":"t_function_bytesconcat_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":75272,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20995:70:101","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"functionReturnParameters":75257,"id":75273,"nodeType":"Return","src":"20988:77:101"}]},"documentation":{"id":75251,"nodeType":"StructuredDocumentation","src":"20712:187:101","text":"@notice Compute the expected commitment for a given blob of data.\n @param data The blob of data to compute a commitment for.\n @return The commitment for the given blob of data."},"implemented":true,"kind":"freeFunction","modifiers":[],"name":"computeCommitmentKeccak256","nameLocation":"20908:26:101","parameters":{"id":75254,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75253,"mutability":"mutable","name":"data","nameLocation":"20948:4:101","nodeType":"VariableDeclaration","scope":75275,"src":"20935:17:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75252,"name":"bytes","nodeType":"ElementaryTypeName","src":"20935:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20934:19:101"},"returnParameters":{"id":75257,"nodeType":"ParameterList","parameters":[{"constant":false,"id":75256,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":75275,"src":"20968:12:101","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":75255,"name":"bytes","nodeType":"ElementaryTypeName","src":"20968:5:101","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20967:14:101"},"scope":75276,"stateMutability":"pure","virtual":false,"visibility":"internal"}],"license":"MIT"},"id":101}