package generated

import (
	"strings"

	"github.com/autonity/autonity/accounts/abi"
	"github.com/autonity/autonity/common"
)

var AccountabilityTestBytecode = common.Hex2Bytes("6080604052600060195534801561001557600080fd5b5060405161621138038061621183398101604081905261003491610576565b600080546001600160a01b0319166001600160a01b03841617905560608101518290829061006190610271565b608081015161006f906103b1565b80602001518160400151116100df5760405162461bcd60e51b815260206004820152602b60248201527f6865696768742072616e6765206e6565647320746f206265206772656174657260448201526a207468616e2064656c746160a81b60648201526084015b60405180910390fd5b60008060009054906101000a90046001600160a01b03166001600160a01b031663ab8f6ffe6040518163ffffffff1660e01b8152600401600060405180830381865afa158015610133573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261015b919081019061061b565b905060005b815181101561020d57601482828151811061017d5761017d6107ba565b6020908102919091018101515182546001808201855560009485529284200180546001600160a01b0319166001600160a01b03909216919091179055835190916015918590859081106101d2576101d26107ba565b602090810291909101810151516001600160a01b03168252810191909152604001600020805460ff1916911515919091179055600101610160565b50508051600355602080820151600481905560408084015160058190556060850151805160065580850151600755820151600855608090940151805160095592830151600a559190910151600b55600c91909155600d5550506000600e55506108e2565b6020810151815111156102d25760405162461bcd60e51b8152602060048201526024808201527f736c617368696e6720726174653a206c6f772063616e6e6f7420657863656564604482015263081b5a5960e21b60648201526084016100d6565b8060400151816020015111156103385760405162461bcd60e51b815260206004820152602560248201527f736c617368696e6720726174653a206d69642063616e6e6f7420657863656564604482015264040d0d2ced60db1b60648201526084016100d6565b6103446004600a6108cf565b816040015111156103ae5760405162461bcd60e51b815260206004820152602e60248201527f736c617368696e6720726174653a20686967682063616e6e6f7420657863656560448201526d321039b1b0b632903330b1ba37b960911b60648201526084016100d6565b50565b6103bd6004600a6108cf565b815111156104335760405162461bcd60e51b815260206004820152603960248201527f636f6c6c7573696f6e20666163746f722063616e6e6f7420657863656564207360448201527f6c617368696e672072617465207363616c6520666163746f720000000000000060648201526084016100d6565b61043f6004600a6108cf565b816020015111156103ae5760405162461bcd60e51b815260206004820152603760248201527f686973746f727920666163746f722063616e6e6f742065786365656420736c6160448201527f7368696e672072617465207363616c6520666163746f7200000000000000000060648201526084016100d6565b6001600160a01b03811681146103ae57600080fd5b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b0381118282101715610505576105056104cd565b60405290565b604051601f8201601f191681016001600160401b0381118282101715610533576105336104cd565b604052919050565b60006060828403121561054d57600080fd5b6105556104e3565b82518152602080840151908201526040928301519281019290925250919050565b60008082840361014081121561058b57600080fd5b8351610596816104b8565b9250610120601f19820112156105ab57600080fd5b5060405160a081016001600160401b03811182821017156105ce576105ce6104cd565b6040908152602085810151835285820151908301526060850151908201526105f9856080860161053b565b606082015261060b8560e0860161053b565b6080820152809150509250929050565b60006020828403121561062d57600080fd5b81516001600160401b0381111561064357600080fd5b8201601f8101841361065457600080fd5b80516001600160401b0381111561066d5761066d6104cd565b8060051b61067d6020820161050b565b9182526020818401810192908101908784111561069957600080fd5b6020850192505b838310156107af5782516001600160401b038111156106be57600080fd5b85016060818a03601f190112156106d457600080fd5b6106dc6104e3565b60208201516106ea816104b8565b81526040820151602082015260608201516001600160401b0381111561070f57600080fd5b60208184010192505089601f83011261072757600080fd5b81516001600160401b03811115610740576107406104cd565b610753601f8201601f191660200161050b565b8181528b602083860101111561076857600080fd5b60005b828110156107875760208186018101518383018201520161076b565b50600060208383010152806040840152505080845250506020820191506020830192506106a0565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6001815b600184111561082157808504811115610805576108056107d0565b600184161561081357908102905b60019390931c9280026107ea565b935093915050565b600082610838575060016108c9565b81610845575060006108c9565b816001811461085b576002811461086557610881565b60019150506108c9565b60ff841115610876576108766107d0565b50506001821b6108c9565b5060208310610133831016604e8410600b84101617156108a4575081810a6108c9565b6108b160001984846107e6565b80600019048211156108c5576108c56107d0565b0290505b92915050565b60006108db8383610829565b9392505050565b615920806108f16000396000f3fe6080604052600436106101c25760003560e01c80636d1884e0116100f7578063a48a9b5011610095578063c3f909d411610064578063c3f909d414610583578063dbd18388146105a5578063e05f8786146105ba578063e08b14ed146105da57600080fd5b8063a48a9b5014610503578063a6b0aaae14610523578063a8031a1d14610543578063bebaa8fc1461055657600080fd5b806380396811116100d157806380396811146104835780638975e977146104a35780639cb22b06146104c3578063a2652078146104e357600080fd5b80636d1884e01461040a5780637ccecadd146104375780637ec8be1d1461046e57600080fd5b806347fc216e11610164578063633b5e5e1161013e578063633b5e5e1461037a578063653cd1991461038f5780636a91991b146103af5780636c9789b0146103cf57600080fd5b806347fc216e146102ff578063505a1b311461032257806351772af91461035a57600080fd5b80631e85f2e5116101a05780631e85f2e51461026a578063239a49ba1461028a5780634108a95a146102aa578063433afda8146102df57600080fd5b8063025ff0a5146101c75780630af86dc2146101e95780630d20e5ea1461024a575b600080fd5b3480156101d357600080fd5b506101e76101e23660046149ce565b6105fa565b005b3480156101f557600080fd5b506101e7610204366004614a07565b6001600160a01b039182166000908152600f6020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001691909216179055565b34801561025657600080fd5b506101e7610265366004614c89565b6107ce565b34801561027657600080fd5b506101e7610285366004614cd7565b6107de565b34801561029657600080fd5b506101e76102a5366004614cd7565b610944565b3480156102b657600080fd5b506102ca6102c5366004614d14565b61094d565b60405190151581526020015b60405180910390f35b3480156102eb57600080fd5b506101e76102fa3660046149ce565b610af0565b34801561030b57600080fd5b50610314610c49565b6040519081526020016102d6565b34801561032e57600080fd5b5061034261033d366004614d53565b610caa565b6040516001600160a01b0390911681526020016102d6565b34801561036657600080fd5b506101e7610375366004614cd7565b610d26565b34801561038657600080fd5b506101e7610d2f565b34801561039b57600080fd5b506101e76103aa366004614cd7565b610d39565b3480156103bb57600080fd5b506101e76103ca3660046149ce565b610d42565b3480156103db57600080fd5b506103ef6103ea366004614d7e565b611006565b604080519384526020840192909252908201526060016102d6565b34801561041657600080fd5b5061042a6104253660046149ce565b61112b565b6040516102d69190614f0f565b34801561044357600080fd5b50610457610452366004614d14565b611366565b6040805192151583526020830191909152016102d6565b34801561047a57600080fd5b506101e76115ac565b34801561048f57600080fd5b5061031461049e366004614d53565b6115b4565b3480156104af57600080fd5b506101e76104be366004614f7b565b61162a565b3480156104cf57600080fd5b5061042a6104de366004614d53565b611760565b3480156104ef57600080fd5b506101e76104fe366004614f7b565b6118b7565b34801561050f57600080fd5b506101e761051e366004614cd7565b6119ed565b34801561052f57600080fd5b5061031461053e366004614f97565b611b6c565b6101e7610551366004614f97565b611bf2565b34801561056257600080fd5b50610576610571366004614d53565b611fd7565b6040516102d69190614fc3565b34801561058f57600080fd5b506105986122fe565b6040516102d69190615046565b3480156105b157600080fd5b506103146123c8565b3480156105c657600080fd5b506101e76105d5366004614cd7565b612429565b3480156105e657600080fd5b506101e76105f53660046150b4565b6125a7565b600054604080517fe7f43c68000000000000000000000000000000000000000000000000000000008152905133926001600160a01b03169163e7f43c689160048083019260209291908290030181865afa15801561065c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106809190615178565b6001600160a01b0316146106db5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064015b60405180910390fd5b600c5481106107515760405162461bcd60e51b8152602060048201526024808201527f64656c7461206e6565647320746f20626520736d616c6c6572207468616e207260448201527f616e67650000000000000000000000000000000000000000000000000000000060648201526084016106d2565b6004546040805160808082526005908201527f64656c746100000000000000000000000000000000000000000000000000000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1600d55565b6107d983838361272d565b505050565b6107e66129f2565b3360009081526015602052604090205460ff1615156001146108705760405162461bcd60e51b815260206004820152602960248201527f66756e6374696f6e207265737472696374656420746f206120636f6d6d69747460448201527f6565206d656d626572000000000000000000000000000000000000000000000060648201526084016106d2565b60408101516001600160a01b031633146108cc5760405162461bcd60e51b815260206004820152601d60248201527f6576656e74207265706f72746572206d7573742062652063616c6c657200000060448201526064016106d2565b6001815160028111156108e1576108e1614d9b565b1461092e5760405162461bcd60e51b815260206004820152601f60248201527f77726f6e67206576656e74207479706520666f722061636375736174696f6e0060448201526064016106d2565b61093781612a48565b6109416000600155565b50565b61094181612c44565b600061095a600180541490565b156109a75760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b60008360098111156109bb576109bb614d9b565b101580156109db575060098360098111156109d8576109d8614d9b565b11155b610a275760405162461bcd60e51b815260206004820152601560248201527f72756c65206964206d7573742062652076616c6964000000000000000000000060448201526064016106d2565b6000610a3284612f8b565b600080546040517f96b477cb0000000000000000000000000000000000000000000000000000000081526004810187905292935090916001600160a01b03909116906396b477cb90602401602060405180830381865afa158015610a9a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610abe9190615195565b6001600160a01b03871660009081526016602090815260408083209383529290522054919091109150505b9392505050565b600054604080517fe7f43c68000000000000000000000000000000000000000000000000000000008152905133926001600160a01b03169163e7f43c689160048083019260209291908290030181865afa158015610b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b769190615178565b6001600160a01b031614610bcc5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016106d2565b600354604080516080808252601e908201527f696e6e6f63656e636550726f6f665375626d697373696f6e57696e646f77000060a0820152602081019290925281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1600355565b6000610c56600180541490565b15610ca35760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b5060025490565b6000610cb7600180541490565b15610d045760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b506001600160a01b038082166000908152600f6020526040902054165b919050565b61094181613116565b610d3761349f565b565b610941816137d1565b600054604080517fe7f43c68000000000000000000000000000000000000000000000000000000008152905133926001600160a01b03169163e7f43c689160048083019260209291908290030181865afa158015610da4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc89190615178565b6001600160a01b031614610e1e5760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016106d2565b600e5415610e945760405162461bcd60e51b815260206004820152602a60248201527f6865696768742072616e6765206368616e676520697320616c7265616479206960448201527f6e2070726f67726573730000000000000000000000000000000000000000000060648201526084016106d2565b610e9f6004826151dd565b15610f115760405162461bcd60e51b8152602060048201526024808201527f6865696768742072616e6765206d7573742062652061206d756c7469706c652060448201527f6f6620340000000000000000000000000000000000000000000000000000000060648201526084016106d2565b600d548111610f885760405162461bcd60e51b815260206004820152602b60248201527f6865696768742072616e6765206e6565647320746f206265206772656174657260448201527f207468616e2064656c746100000000000000000000000000000000000000000060648201526084016106d2565b600580546040805160808082528101939093527f72616e676500000000000000000000000000000000000000000000000000000060a0840152602083019190915281018290524360608201527f207e45ce6f2191c3efffe5d0d91591cf81afd23cbf4bd746981d7a8a8dcfe1ba9060c00160405180910390a1600c55565b60008060006110136129f2565b6000546001600160a01b031633146110935760405162461bcd60e51b815260206004820152602860248201527f66756e6374696f6e207265737472696374656420746f204175746f6e6974792060448201527f636f6e747261637400000000000000000000000000000000000000000000000060648201526084016106d2565b61109b613b16565b83156110a9576110a961349f565b600e54156110c757600e80549060006110c183615220565b91905055505b600554600c54111561110157600554600c546000916110e591615255565b90506110f2600482615268565b6110fc9082615255565b600e55505b5050600c546005819055600d546004819055600e54919250906111246000600155565b9193909250565b61119460408051610140810190915280600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b60018054036111e55760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b600282815481106111f8576111f861527c565b600091825260209091206040805161014081019091526008909202018054829060ff16600281111561122c5761122c614d9b565b600281111561123d5761123d614d9b565b81528154602090910190610100900460ff16600981111561126057611260614d9b565b600981111561127157611271614d9b565b815281546001600160a01b03620100009091048116602083015260018301541660408201526002820180546060909201916112ab906152ab565b80601f01602080910402602001604051908101604052809291908181526020018280546112d7906152ab565b80156113245780601f106112f957610100808354040283529160200191611324565b820191906000526020600020905b81548152906001019060200180831161130757829003601f168201915b50505050508152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050919050565b600080611374600180541490565b156113c15760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b60008460098111156113d5576113d5614d9b565b101580156113f5575060098460098111156113f2576113f2614d9b565b11155b6114415760405162461bcd60e51b815260206004820152601560248201527f72756c65206964206d7573742062652076616c6964000000000000000000000060448201526064016106d2565b600061144c85612f8b565b600080546040517f96b477cb0000000000000000000000000000000000000000000000000000000081526004810188905292935090916001600160a01b03909116906396b477cb90602401602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d89190615195565b6001600160a01b038816600090815260166020908152604080832084845290915290205490915082116115125760009350600092506115a2565b6001600160a01b03871660009081526012602052604090205415611599576001600160a01b03871660009081526012602052604081205460029061155890600190615255565b815481106115685761156861527c565b9060005260206000209060080201905060009450600360000154816006015461159191906152fe565b9350506115a2565b60019350600092505b5050935093915050565b610d37613b16565b60006115c1600180541490565b1561160e5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b506001600160a01b031660009081526011602052604090205490565b600054604080517fe7f43c68000000000000000000000000000000000000000000000000000000008152905133926001600160a01b03169163e7f43c689160048083019260209291908290030181865afa15801561168c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116b09190615178565b6001600160a01b0316146117065760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016106d2565b61170f81613ed1565b6040517feda1502b5625ce16270e5a5f5561c68dfecaef2c5eacc1cc9521fad59c34d82f90611742906009908490615311565b60405180910390a180516009556020810151600a5560400151600b55565b6117c960408051610140810190915280600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b600180540361181a5760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b6001600160a01b03821660009081526012602052604090205461187f5760405162461bcd60e51b815260206004820152600d60248201527f6e6f2061636375736174696f6e0000000000000000000000000000000000000060448201526064016106d2565b6001600160a01b0382166000908152601260205260409020546002906118a790600190615255565b815481106111f8576111f861527c565b600054604080517fe7f43c68000000000000000000000000000000000000000000000000000000008152905133926001600160a01b03169163e7f43c689160048083019260209291908290030181865afa158015611919573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061193d9190615178565b6001600160a01b0316146119935760405162461bcd60e51b815260206004820152601a60248201527f63616c6c6572206973206e6f7420746865206f70657261746f7200000000000060448201526064016106d2565b61199c81613fd8565b6040517f6fea73568c60fe418d5e4d1a9fde6dce66d8816ffcebe91449e9bf1098a5ce1a906119cf906006908490615311565b60405180910390a18051600655602081015160075560400151600855565b6119f56129f2565b3360009081526015602052604090205460ff161515600114611a7f5760405162461bcd60e51b815260206004820152602960248201527f66756e6374696f6e207265737472696374656420746f206120636f6d6d69747460448201527f6565206d656d626572000000000000000000000000000000000000000000000060648201526084016106d2565b60408101516001600160a01b03163314611adb5760405162461bcd60e51b815260206004820152601d60248201527f6576656e74207265706f72746572206d7573742062652063616c6c657200000060448201526064016106d2565b600081516002811115611af057611af0614d9b565b14611b635760405162461bcd60e51b815260206004820152602160248201527f77726f6e67206576656e74207479706520666f72206d69736265686176696f7560448201527f720000000000000000000000000000000000000000000000000000000000000060648201526084016106d2565b61093781614155565b6000611b79600180541490565b15611bc65760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b506001600160a01b03821660009081526016602090815260408083208484529091529020545b92915050565b611bfa6129f2565b6000546001600160a01b03163314611c7a5760405162461bcd60e51b815260206004820152602860248201527f66756e6374696f6e207265737472696374656420746f204175746f6e6974792060448201527f636f6e747261637400000000000000000000000000000000000000000000000060648201526084016106d2565b6001600160a01b038281166000908152600f602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000008116909155825491517f1904bb2e0000000000000000000000000000000000000000000000000000000081529084166004820181905234949093921690631904bb2e90602401600060405180830381865afa158015611d1a573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052611d6091908101906153ac565b90508315611df4576000805460208301516040517ff7fcc5100000000000000000000000000000000000000000000000000000000081526001600160a01b039182166004820152602481018890526044810193909352169063f7fcc51090606401600060405180830381600087803b158015611ddb57600080fd5b505af1158015611def573d6000803e3d6000fd5b505050505b8215611f745780516040516000916001600160a01b0316906108fc90869084818181858888f193505050503d8060008114611e4b576040519150601f19603f3d011682016040523d82523d6000602084013e611e50565b606091505b5050905080611f725760008060009054906101000a90046001600160a01b03166001600160a01b031663f7866ee36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ead573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ed19190615178565b9050600080826001600160a01b03168760405160006040518083038185875af1925050503d8060008114611f21576040519150601f19603f3d011682016040523d82523d6000602084013e611f26565b606091505b509150915081611f6a577f1137d8c966ce69b9630fb2294be011f3d64cc56e91fad7d375f0662568e9d3528382604051611f61929190615532565b60405180910390a15b600096505050505b505b602080820151604080516001600160a01b03928316815292830187905282018590528616907fd7bd322f319b32cbf0c40184f51d4204b4e08b1c95ca79f470747483881840e99060600160405180910390a2505050611fd36000600155565b5050565b6060611fe4600180541490565b156120315760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b6001600160a01b03821660009081526010602052604081205467ffffffffffffffff81111561206257612062614a40565b6040519080825280602002602001820160405280156120fc57816020015b6120e960408051610140810190915280600081526020016000815260200160006001600160a01b0316815260200160006001600160a01b031681526020016060815260200160008152602001600081526020016000815260200160008152602001600081525090565b8152602001906001900390816120805790505b50905060005b6001600160a01b0384166000908152601060205260409020548110156122f7576001600160a01b0384166000908152601060205260409020805460029190839081106121505761215061527c565b90600052602060002001548154811061216b5761216b61527c565b600091825260209091206040805161014081019091526008909202018054829060ff16600281111561219f5761219f614d9b565b60028111156121b0576121b0614d9b565b81528154602090910190610100900460ff1660098111156121d3576121d3614d9b565b60098111156121e4576121e4614d9b565b815281546001600160a01b036201000090910481166020830152600183015416604082015260028201805460609092019161221e906152ab565b80601f016020809104026020016040519081016040528092919081815260200182805461224a906152ab565b80156122975780601f1061226c57610100808354040283529160200191612297565b820191906000526020600020905b81548152906001019060200180831161227a57829003601f168201915b50505050508152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250508282815181106122e4576122e461527c565b6020908102919091010152600101612102565b5092915050565b61230661484e565b60018054036123575760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b506040805160a0810182526003548152600454602080830191909152600554828401528251606081810185526006548252600754828401526008548286015280840191909152835190810184526009548152600a5491810191909152600b5492810192909252608081019190915290565b60006123d5600180541490565b156124225760405162461bcd60e51b815260206004820152601d60248201527f72656164206f6e6c79207265656e7472616e637920646574656374656400000060448201526064016106d2565b50600e5490565b6124316129f2565b3360009081526015602052604090205460ff1615156001146124bb5760405162461bcd60e51b815260206004820152602960248201527f66756e6374696f6e207265737472696374656420746f206120636f6d6d69747460448201527f6565206d656d626572000000000000000000000000000000000000000000000060648201526084016106d2565b60408101516001600160a01b031633146125175760405162461bcd60e51b815260206004820152601d60248201527f6576656e74207265706f72746572206d7573742062652063616c6c657200000060448201526064016106d2565b60028151600281111561252c5761252c614d9b565b1461259e5760405162461bcd60e51b8152602060048201526024808201527f77726f6e67206576656e74207479706520666f7220696e6e6f63656e6365207060448201527f726f6f660000000000000000000000000000000000000000000000000000000060648201526084016106d2565b610937816143da565b6125af6129f2565b6000546001600160a01b0316331461262f5760405162461bcd60e51b815260206004820152602860248201527f66756e6374696f6e207265737472696374656420746f204175746f6e6974792060448201527f636f6e747261637400000000000000000000000000000000000000000000000060648201526084016106d2565b612692601380548060200260200160405190810160405280929190818152602001828054801561268857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161266a575b5050505050614587565b6126f560148054806020026020016040519081016040528092919081815260200182805480156126eb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116126cd575b505050505061463d565b60148054612705916013916148c0565b5061270f8161463d565b8051612722906014906020840190614910565b506109416000600155565b60608301516040808501516001600160a01b038084166000818152600f60205284812080549484167fffffffffffffffffffffffff000000000000000000000000000000000000000090951694909417909355915492517f5b7d6c3600000000000000000000000000000000000000000000000000000000815260048101929092526003921690635b7d6c3690602401602060405180830381865afa1580156127da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127fe9190615562565b600581111561280f5761280f614d9b565b0361281a5750505050565b600061283161282c8660200151612f8b565b6146ef565b600a546001600160a01b0384166000908152601160205260408120549293509161285b919061557d565b600954612868908761557d565b61287290846152fe565b61287c91906152fe565b6001600160a01b038416600090815260116020526040812080549293506001929091906128aa9084906152fe565b90915550506001600160a01b038316600090815260116020526040812054600b5486916128d69161557d565b6128e0919061557d565b600080546040517f122b41220000000000000000000000000000000000000000000000000000000081529293509091829182916001600160a01b039091169063122b41229061293d908a90899089906002906003906004016155a4565b6060604051808303816000875af115801561295c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061298091906155e6565b60a0808e0151604080516001600160a01b038e168152602081018790529081018590528315156060820152608081019190915293965091945092507f6617e612ea2d01b5a235997fa4963b56b1097df6f968a82972433e9ff852e0f9910160405180910390a150505050505050505050565b60015415612a425760405162461bcd60e51b815260206004820152601360248201527f7265656e7472616e63792064657465637465640000000000000000000000000060448201526064016106d2565b60018055565b6000806000806000612a6c8660800151600360020154600360010154600e54614769565b9450945094509450945084612ac35760405162461bcd60e51b815260206004820152601e60248201527f6661696c65642061636375736174696f6e20766572696669636174696f6e000060448201526064016106d2565b85606001516001600160a01b0316846001600160a01b031614612b285760405162461bcd60e51b815260206004820152601160248201527f6f6666656e646572206d69736d6174636800000000000000000000000000000060448201526064016106d2565b85602001516009811115612b3e57612b3e614d9b565b8314612b8c5760405162461bcd60e51b815260206004820152601060248201527f72756c65206964206d69736d617463680000000000000000000000000000000060448201526064016106d2565b600080546040517f96b477cb000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906396b477cb90602401602060405180830381865afa158015612bef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c139190615195565b60c0880184905260e088018190524361010089015261012088018390529050612c3b87612c44565b50505050505050565b60608101516001600160a01b031660009081526012602052604090205415612cae5760405162461bcd60e51b815260206004820181905260248201527f616c72656164792070726f63657373696e6720616e2061636375736174696f6e60448201526064016106d2565b6000612cbd8260200151612f8b565b60608301516001600160a01b0316600090815260166020908152604080832060e087015184529091529020549091508111612d5f5760405162461bcd60e51b8152602060048201526024808201527f616c726561647920736c6173686564206174207468652070726f6f662773206560448201527f706f63680000000000000000000000000000000000000000000000000000000060648201526084016106d2565b6002805460a08401819052600180820183556000839052845160089092027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace018054869491939284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00909216918490811115612dde57612dde614d9b565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff16610100836009811115612e2357612e23614d9b565b0217905550604082015181547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b039283160217825560608301516001830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190921617905560808201516002820190612eac908261566e565b5060a082810151600383015560c0830151600483015560e08301516005830155610100830151600683015561012090920151600790910155820151612ef29060016152fe565b60608301516001600160a01b031660009081526012602052604090205560a0820151601890612f229060016152fe565b815460018101835560009283526020928390200155606083015160a084015160408051858152938401919091526001600160a01b03909116917f2e8e354b41470731dafa7c3df150e9498a8d5b9c51ff0259fbf77f721ba4035191015b60405180910390a25050565b60006009826009811115612fa157612fa1614d9b565b03612fae57600192915050565b6000826009811115612fc257612fc2614d9b565b03612fce576002611bec565b6001826009811115612fe257612fe2614d9b565b03612fee576002611bec565b600282600981111561300257613002614d9b565b0361300e576002611bec565b600382600981111561302257613022614d9b565b0361302e576002611bec565b600482600981111561304257613042614d9b565b0361304e576002611bec565b600582600981111561306257613062614d9b565b0361306e576002611bec565b600682600981111561308257613082614d9b565b0361308e576002611bec565b60078260098111156130a2576130a2614d9b565b036130ae576003611bec565b60088260098111156130c2576130c2614d9b565b036130ce576003611bec565b60405162461bcd60e51b815260206004820152600c60248201527f756e6b6e6f776e2072756c65000000000000000000000000000000000000000060448201526064016106d2565b60006131258260200151612f8b565b60608301516001600160a01b0316600090815260166020908152604080832060e0870151845290915290205490915081116131c75760405162461bcd60e51b8152602060048201526024808201527f616c726561647920736c6173686564206174207468652070726f6f662773206560448201527f706f63680000000000000000000000000000000000000000000000000000000060648201526084016106d2565b6002805460a08401819052600180820183556000839052845160089092027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace018054869491939284927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0090921691849081111561324657613246614d9b565b02179055506020820151815482907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010083600981111561328b5761328b614d9b565b0217905550604082015181547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b039283160217825560608301516001830180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169190921617905560808201516002820190613314908261566e565b5060a082810151600383015560c083015160048084019190915560e08085015160058501556101008501516006850155610120909401516007909301929092556060850180516001600160a01b039081166000908152601060209081526040808320958a018051875460018181018a559886528486200155805160178054988901815585527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c159097019690965584518416835260168252808320978a0151835296815286822088905592519351905486517f6fc535150000000000000000000000000000000000000000000000000000000081529651948316967f5fd9605880705541b88eb5df56222ffa3c3e6884010fcf26d4c2c372917d98d796899693959290941693636fc535159382820193929091908290030181865afa158015613460573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906134849190615195565b60408051938452602084019290925290820152606001612f7f565b60008054604080517f6fc53515000000000000000000000000000000000000000000000000000000008152905183926001600160a01b031691636fc535159160048083019260209291908290030181865afa158015613502573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135269190615195565b905060005b601754811015613593578160026017838154811061354b5761354b61527c565b9060005260206000200154815481106135665761356661527c565b9060005260206000209060080201600501540361358b576135886001846152fe565b92505b60010161352b565b5060008060009054906101000a90046001600160a01b03166001600160a01b0316630aac2da16040518163ffffffff1660e01b8152600401602060405180830381865afa1580156135e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061360c9190615195565b905060005b6017548110156137c4576137bc6002601783815481106136335761363361527c565b90600052602060002001548154811061364e5761364e61527c565b600091825260209091206040805161014081019091526008909202018054829060ff16600281111561368257613682614d9b565b600281111561369357613693614d9b565b81528154602090910190610100900460ff1660098111156136b6576136b6614d9b565b60098111156136c7576136c7614d9b565b815281546001600160a01b0362010000909104811660208301526001830154166040820152600282018054606090920191613701906152ab565b80601f016020809104026020016040519081016040528092919081815260200182805461372d906152ab565b801561377a5780601f1061374f5761010080835404028352916020019161377a565b820191906000526020600020905b81548152906001019060200180831161375d57829003601f168201915b5050505050815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050858461272d565b600101613611565b506107d96017600061497d565b60608101516001600160a01b03166000908152601260205260408120549081900361383e5760405162461bcd60e51b815260206004820152601860248201527f6e6f206173736f6369617465642061636375736174696f6e000000000000000060448201526064016106d2565b8160200151600981111561385457613854614d9b565b6002613861600184615255565b815481106138715761387161527c565b6000918252602090912060089091020154610100900460ff16600981111561389b5761389b614d9b565b1461390e5760405162461bcd60e51b815260206004820152602760248201527f756e6d61746368696e672070726f6f6620616e642061636375736174696f6e2060448201527f72756c652069640000000000000000000000000000000000000000000000000060648201526084016106d2565b60c08201516002613920600184615255565b815481106139305761393061527c565b906000526020600020906008020160040154146139b55760405162461bcd60e51b815260206004820152602560248201527f756e6d61746368696e672070726f6f6620616e642061636375736174696f6e2060448201527f626c6f636b00000000000000000000000000000000000000000000000000000060648201526084016106d2565b61012082015160026139c8600184615255565b815481106139d8576139d861527c565b90600052602060002090600802016007015414613a5c5760405162461bcd60e51b8152602060048201526024808201527f756e6d61746368696e672070726f6f6620616e642061636375736174696f6e2060448201527f686173680000000000000000000000000000000000000000000000000000000060648201526084016106d2565b6019545b601854811015613abc578160188281548110613a7e57613a7e61527c565b906000526020600020015403613ab457600060188281548110613aa357613aa361527c565b600091825260209091200155613abc565b600101613a60565b506060820180516001600160a01b0390811660009081526012602090815260408083208390559351935191825292909116917f1fa96beb8dddcb7d4484dd00c4059e872439f7a474a2ecf49c430fc6e86c9e1f9101612f7f565b60195460008054604080517f6fc5351500000000000000000000000000000000000000000000000000000000815290516001600160a01b0390921691636fc53515916004808201926020929091908290030181865afa158015613b7d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613ba19190615195565b90505b601854821015613ecb57600060188381548110613bc357613bc361527c565b9060005260206000200154905080600003613bde5750613ec0565b613be9600182615255565b9050600060028281548110613c0057613c0061527c565b600091825260209091206040805161014081019091526008909202018054829060ff166002811115613c3457613c34614d9b565b6002811115613c4557613c45614d9b565b81528154602090910190610100900460ff166009811115613c6857613c68614d9b565b6009811115613c7957613c79614d9b565b815281546001600160a01b0362010000909104811660208301526001830154166040820152600282018054606090920191613cb3906152ab565b80601f0160208091040260200160405190810160405280929190818152602001828054613cdf906152ab565b8015613d2c5780601f10613d0157610100808354040283529160200191613d2c565b820191906000526020600020905b815481529060010190602001808311613d0f57829003601f168201915b5050505050815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050905043600360000154826101000151613d8091906152fe565b1115613d8d575050613ecb565b60608101516001600160a01b031660009081526012602090815260408220829055820151613dba90612f8b565b60608301516001600160a01b0316600090815260166020908152604080832060e087015184529091529020549091508111613df757505050613ec0565b606082810180516001600160a01b03908116600090815260166020908152604080832060e08901518452825280832087905584518416835260108252808320805460018082018355918552838520018a90556017805491820181559093527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c159092018890559251815186815293840188905290830188905216917f5fd9605880705541b88eb5df56222ffa3c3e6884010fcf26d4c2c372917d98d7910160405180910390a25050505b600190910190613ba4565b50601955565b613edd6004600a6158aa565b81511115613f535760405162461bcd60e51b815260206004820152603960248201527f636f6c6c7573696f6e20666163746f722063616e6e6f7420657863656564207360448201527f6c617368696e672072617465207363616c6520666163746f720000000000000060648201526084016106d2565b613f5f6004600a6158aa565b816020015111156109415760405162461bcd60e51b815260206004820152603760248201527f686973746f727920666163746f722063616e6e6f742065786365656420736c6160448201527f7368696e672072617465207363616c6520666163746f7200000000000000000060648201526084016106d2565b6020810151815111156140525760405162461bcd60e51b8152602060048201526024808201527f736c617368696e6720726174653a206c6f772063616e6e6f742065786365656460448201527f206d69640000000000000000000000000000000000000000000000000000000060648201526084016106d2565b8060400151816020015111156140d05760405162461bcd60e51b815260206004820152602560248201527f736c617368696e6720726174653a206d69642063616e6e6f742065786365656460448201527f206869676800000000000000000000000000000000000000000000000000000060648201526084016106d2565b6140dc6004600a6158aa565b816040015111156109415760405162461bcd60e51b815260206004820152602e60248201527f736c617368696e6720726174653a20686967682063616e6e6f7420657863656560448201527f64207363616c6520666163746f7200000000000000000000000000000000000060648201526084016106d2565b600080600080600061416c60fe87608001516147f5565b94509450945094509450846141c35760405162461bcd60e51b815260206004820152601960248201527f6661696c65642070726f6f6620766572696669636174696f6e0000000000000060448201526064016106d2565b85606001516001600160a01b0316846001600160a01b0316146142285760405162461bcd60e51b815260206004820152601160248201527f6f6666656e646572206d69736d6174636800000000000000000000000000000060448201526064016106d2565b8560200151600981111561423e5761423e614d9b565b831461428c5760405162461bcd60e51b815260206004820152601060248201527f72756c65206964206d69736d617463680000000000000000000000000000000060448201526064016106d2565b4382106142db5760405162461bcd60e51b815260206004820152601660248201527f63616e277420626520696e20746865206675747572650000000000000000000060448201526064016106d2565b6000821161432b5760405162461bcd60e51b815260206004820152601360248201527f63616e27742062652061742067656e657369730000000000000000000000000060448201526064016106d2565b600080546040517f96b477cb000000000000000000000000000000000000000000000000000000008152600481018590526001600160a01b03909116906396b477cb90602401602060405180830381865afa15801561438e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906143b29190615195565b60c0880184905260e088018190524361010089015261012088018390529050612c3b87613116565b60008060008060006143f160fd87608001516147f5565b94509450945094509450846144485760405162461bcd60e51b815260206004820152601d60248201527f6661696c656420696e6e6f63656e636520766572696669636174696f6e00000060448201526064016106d2565b85606001516001600160a01b0316846001600160a01b0316146144ad5760405162461bcd60e51b815260206004820152601160248201527f6f6666656e646572206d69736d6174636800000000000000000000000000000060448201526064016106d2565b856020015160098111156144c3576144c3614d9b565b83146145115760405162461bcd60e51b815260206004820152601060248201527f72756c65206964206d69736d617463680000000000000000000000000000000060448201526064016106d2565b4382106145605760405162461bcd60e51b815260206004820152601660248201527f63616e277420626520696e20746865206675747572650000000000000000000060448201526064016106d2565b60c0860182905261012086018190524361010087015261457f866137d1565b505050505050565b60005b8151811015611fd357601560008383815181106145a9576145a961527c565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff161561463557601560008383815181106145eb576145eb61527c565b6020908102919091018101516001600160a01b0316825281019190915260400160002080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690555b60010161458a565b60005b8151811015611fd3576015600083838151811061465f5761465f61527c565b6020908102919091018101516001600160a01b031682528101919091526040016000205460ff1615156001146146e7576001601560008484815181106146a7576146a761527c565b60200260200101516001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600101614640565b60006001820361470157505060065490565b6002820361471157505060075490565b6003820361472157505060085490565b60405162461bcd60e51b815260206004820152601060248201527f756e6b6e6f776e2073657665726974790000000000000000000000000000000060448201526064016106d2565b60008060008060008060fc905060008989898d60405160200161478f94939291906158b6565b60405160208183030381529060405290506147a861499b565b60a081835160208501865afa6147bd57600080fd5b80516001036147cb57600197505b602081015160408201516060830151608090930151999e919d509b50909950969750505050505050565b600080600080600061480561499b565b60a081885160208a018b5afa61481a57600080fd5b805160010361482857600195505b602081015160408201516060830151608090930151979a91995097509095945092505050565b6040518060a0016040528060008152602001600081526020016000815260200161489260405180606001604052806000815260200160008152602001600081525090565b81526020016148bb60405180606001604052806000815260200160008152602001600081525090565b905290565b8280548282559060005260206000209081019282156149005760005260206000209182015b828111156149005782548255916001019190600101906148e5565b5061490c9291506149b9565b5090565b828054828255906000526020600020908101928215614900579160200282015b8281111561490057825182547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b03909116178255602090920191600190910190614930565b508054600082559060005260206000209081019061094191906149b9565b6040518060a001604052806005906020820280368337509192915050565b5b8082111561490c57600081556001016149ba565b6000602082840312156149e057600080fd5b5035919050565b6001600160a01b038116811461094157600080fd5b8035610d21816149e7565b60008060408385031215614a1a57600080fd5b8235614a25816149e7565b91506020830135614a35816149e7565b809150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051610140810167ffffffffffffffff81118282101715614a9357614a93614a40565b60405290565b604051610280810167ffffffffffffffff81118282101715614a9357614a93614a40565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715614b0457614b04614a40565b604052919050565b803560038110610d2157600080fd5b8035600a8110610d2157600080fd5b600067ffffffffffffffff821115614b4457614b44614a40565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b600082601f830112614b8157600080fd5b8135614b94614b8f82614b2a565b614abd565b818152846020838601011115614ba957600080fd5b816020850160208301376000918101602001919091529392505050565b60006101408284031215614bd957600080fd5b614be1614a6f565b9050614bec82614b0c565b8152614bfa60208301614b1b565b6020820152614c0b604083016149fc565b6040820152614c1c606083016149fc565b6060820152608082013567ffffffffffffffff811115614c3b57600080fd5b614c4784828501614b70565b60808301525060a0828101359082015260c0808301359082015260e0808301359082015261010080830135908201526101209182013591810191909152919050565b600080600060608486031215614c9e57600080fd5b833567ffffffffffffffff811115614cb557600080fd5b614cc186828701614bc6565b9660208601359650604090950135949350505050565b600060208284031215614ce957600080fd5b813567ffffffffffffffff811115614d0057600080fd5b614d0c84828501614bc6565b949350505050565b600080600060608486031215614d2957600080fd5b8335614d34816149e7565b9250614d4260208501614b1b565b929592945050506040919091013590565b600060208284031215614d6557600080fd5b8135610ae9816149e7565b801515811461094157600080fd5b600060208284031215614d9057600080fd5b8135610ae981614d70565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b60038110614dda57614dda614d9b565b9052565b600a8110614dda57614dda614d9b565b60005b83811015614e09578181015183820152602001614df1565b50506000910152565b60008151808452614e2a816020860160208601614dee565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b614e67828251614dca565b60006020820151614e7b6020850182614dde565b506040820151614e9660408501826001600160a01b03169052565b506060820151614eb160608501826001600160a01b03169052565b5060808201516101406080850152614ecd610140850182614e12565b905060a083015160a085015260c083015160c085015260e083015160e08501526101008301516101008501526101208301516101208501528091505092915050565b602081526000610ae96020830184614e5c565b600060608284031215614f3457600080fd5b6040516060810167ffffffffffffffff81118282101715614f5757614f57614a40565b60409081528335825260208085013590830152928301359281019290925250919050565b600060608284031215614f8d57600080fd5b610ae98383614f22565b60008060408385031215614faa57600080fd5b8235614fb5816149e7565b946020939093013593505050565b6000602082016020835280845180835260408501915060408160051b86010192506020860160005b8281101561503a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452615025858351614e5c565b94506020938401939190910190600101614feb565b50929695505050505050565b600061012082019050825182526020830151602083015260408301516040830152606083015161508d60608401828051825260208082015190830152604090810151910152565b5060809290920151805160c0830152602081015160e0830152604001516101009091015290565b6000602082840312156150c657600080fd5b813567ffffffffffffffff8111156150dd57600080fd5b8201601f810184136150ee57600080fd5b803567ffffffffffffffff81111561510857615108614a40565b8060051b61511860208201614abd565b9182526020818401810192908101908784111561513457600080fd5b6020850194505b838510156151625784359250615150836149e7565b8282526020948501949091019061513b565b979650505050505050565b8051610d21816149e7565b60006020828403121561518a57600080fd5b8151610ae9816149e7565b6000602082840312156151a757600080fd5b5051919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000826151ec576151ec6151ae565b500690565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008161522f5761522f6151f1565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b81810381811115611bec57611bec6151f1565b600082615277576152776151ae565b500490565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600181811c908216806152bf57607f821691505b6020821081036152f8577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b80820180821115611bec57611bec6151f1565b82548152600183015460208201526002830154604082015260c081018251606083015260208301516080830152604083015160a0830152610ae9565b600082601f83011261535e57600080fd5b8151602083016000615372614b8f84614b2a565b905082815285838301111561538657600080fd5b615394836020830184614dee565b95945050505050565b805160068110610d2157600080fd5b6000602082840312156153be57600080fd5b815167ffffffffffffffff8111156153d557600080fd5b820161028081850312156153e857600080fd5b6153f0614a99565b6153f98261516d565b81526154076020830161516d565b60208201526154186040830161516d565b6040820152606082015167ffffffffffffffff81111561543757600080fd5b6154438682850161534d565b6060830152506080828101519082015260a0808301519082015260c0808301519082015260e0808301519082015261010080830151908201526101208083015190820152610140808301519082015261016080830151908201526154aa610180830161516d565b6101808201526101a082810151908201526101c080830151908201526101e08083015190820152610200808301519082015261022082015167ffffffffffffffff8111156154f757600080fd5b6155038682850161534d565b61022083015250615517610240830161539d565b61024082015261026091820151918101919091529392505050565b6001600160a01b03831681526060602082015260006060820152608060408201526000614d0c6080830184614e12565b60006020828403121561557457600080fd5b610ae98261539d565b8082028115828204841417611bec57611bec6151f1565b60068110614dda57614dda614d9b565b6001600160a01b0386168152602081018590526040810184905260a081016155cf6060830185615594565b6155dc6080830184615594565b9695505050505050565b6000806000606084860312156155fb57600080fd5b835160208501516040860151919450925061561581614d70565b809150509250925092565b601f8211156107d957806000526020600020601f840160051c810160208510156156475750805b601f840160051c820191505b818110156156675760008155600101615653565b5050505050565b815167ffffffffffffffff81111561568857615688614a40565b61569c8161569684546152ab565b84615620565b6020601f8211600181146156ee57600083156156b85750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455615667565b6000848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b8281101561573c578785015182556020948501946001909201910161571c565b508482101561577857868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b01905550565b6001815b60018411156157c2578085048111156157a6576157a66151f1565b60018416156157b457908102905b60019390931c92800261578b565b935093915050565b6000826157d957506001611bec565b816157e657506000611bec565b81600181146157fc576002811461580657615822565b6001915050611bec565b60ff841115615817576158176151f1565b50506001821b611bec565b5060208310610133831016604e8410600b8410161715615845575081810a611bec565b6158707fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484615787565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156158a2576158a26151f1565b029392505050565b6000610ae983836157ca565b848152836020820152826040820152600082516158da816060850160208701614dee565b919091016060019594505050505056fea2646970667358221220cda867fcec4596d1eb14dbe64ff3c3a0bfc4d8dc4dbdf881d6e6b7736486276f64736f6c634300081e0033")

var AccountabilityTestAbi, _ = abi.JSON(strings.NewReader(`[
   {
      "inputs" : [
         {
            "internalType" : "contract IAutonity",
            "name" : "_autonity",
            "type" : "address"
         },
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "innocenceProofSubmissionWindow",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "delta",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "range",
                  "type" : "uint256"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "low",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "mid",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "high",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAccountability.BaseSlashingRates",
                  "name" : "baseSlashingRates",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "collusion",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "history",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "jail",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAccountability.Factors",
                  "name" : "factors",
                  "type" : "tuple"
               }
            ],
            "internalType" : "struct IAccountability.Config",
            "name" : "_config",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "constructor"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "collusion",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "history",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "jail",
                  "type" : "uint256"
               }
            ],
            "indexed" : false,
            "internalType" : "struct IAccountability.Factors",
            "name" : "oldFactors",
            "type" : "tuple"
         },
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "collusion",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "history",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "jail",
                  "type" : "uint256"
               }
            ],
            "indexed" : false,
            "internalType" : "struct IAccountability.Factors",
            "name" : "newFactors",
            "type" : "tuple"
         }
      ],
      "name" : "AccountabilityFactorsUpdate",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "low",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "mid",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "high",
                  "type" : "uint256"
               }
            ],
            "indexed" : false,
            "internalType" : "struct IAccountability.BaseSlashingRates",
            "name" : "oldRates",
            "type" : "tuple"
         },
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "low",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "mid",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "high",
                  "type" : "uint256"
               }
            ],
            "indexed" : false,
            "internalType" : "struct IAccountability.BaseSlashingRates",
            "name" : "newRates",
            "type" : "tuple"
         }
      ],
      "name" : "BaseSlashingRateUpdate",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "to",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "methodSignature",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "bytes",
            "name" : "returnData",
            "type" : "bytes"
         }
      ],
      "name" : "CallFailed",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "name",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "oldValue",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "newValue",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateAddress",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "name",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "oldValue",
            "type" : "bool"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "newValue",
            "type" : "bool"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateBool",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "name",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "int256",
            "name" : "oldValue",
            "type" : "int256"
         },
         {
            "indexed" : false,
            "internalType" : "int256",
            "name" : "newValue",
            "type" : "int256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateInt",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "string",
            "name" : "name",
            "type" : "string"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "oldValue",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "newValue",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "appliesAtHeight",
            "type" : "uint256"
         }
      ],
      "name" : "ConfigUpdateUint",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_id",
            "type" : "uint256"
         }
      ],
      "name" : "InnocenceProven",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_severity",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_id",
            "type" : "uint256"
         }
      ],
      "name" : "NewAccusation",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_severity",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_id",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_epoch",
            "type" : "uint256"
         }
      ],
      "name" : "NewFaultProof",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "_reporter",
            "type" : "address"
         },
         {
            "indexed" : true,
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_ntnReward",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "_atnReward",
            "type" : "uint256"
         }
      ],
      "name" : "ReporterRewarded",
      "type" : "event"
   },
   {
      "anonymous" : false,
      "inputs" : [
         {
            "indexed" : false,
            "internalType" : "address",
            "name" : "validator",
            "type" : "address"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "amount",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "releaseBlock",
            "type" : "uint256"
         },
         {
            "indexed" : false,
            "internalType" : "bool",
            "name" : "isJailbound",
            "type" : "bool"
         },
         {
            "indexed" : false,
            "internalType" : "uint256",
            "name" : "eventId",
            "type" : "uint256"
         }
      ],
      "name" : "SlashingEvent",
      "type" : "event"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "internalType" : "address",
            "name" : "_reporter",
            "type" : "address"
         }
      ],
      "name" : "addBeneficiary",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "internalType" : "enum IAccountability.Rule",
            "name" : "_rule",
            "type" : "uint8"
         },
         {
            "internalType" : "uint256",
            "name" : "_block",
            "type" : "uint256"
         }
      ],
      "name" : "canAccuse",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "_result",
            "type" : "bool"
         },
         {
            "internalType" : "uint256",
            "name" : "_deadline",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "internalType" : "enum IAccountability.Rule",
            "name" : "_rule",
            "type" : "uint8"
         },
         {
            "internalType" : "uint256",
            "name" : "_block",
            "type" : "uint256"
         }
      ],
      "name" : "canSlash",
      "outputs" : [
         {
            "internalType" : "bool",
            "name" : "",
            "type" : "bool"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_ntnReward",
            "type" : "uint256"
         }
      ],
      "name" : "distributeRewards",
      "outputs" : [],
      "stateMutability" : "payable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "bool",
            "name" : "_epochEnd",
            "type" : "bool"
         }
      ],
      "name" : "finalize",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_offender",
            "type" : "address"
         }
      ],
      "name" : "getBeneficiary",
      "outputs" : [
         {
            "internalType" : "address",
            "name" : "",
            "type" : "address"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getConfig",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "innocenceProofSubmissionWindow",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "delta",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "range",
                  "type" : "uint256"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "low",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "mid",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "high",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAccountability.BaseSlashingRates",
                  "name" : "baseSlashingRates",
                  "type" : "tuple"
               },
               {
                  "components" : [
                     {
                        "internalType" : "uint256",
                        "name" : "collusion",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "history",
                        "type" : "uint256"
                     },
                     {
                        "internalType" : "uint256",
                        "name" : "jail",
                        "type" : "uint256"
                     }
                  ],
                  "internalType" : "struct IAccountability.Factors",
                  "name" : "factors",
                  "type" : "tuple"
               }
            ],
            "internalType" : "struct IAccountability.Config",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_id",
            "type" : "uint256"
         }
      ],
      "name" : "getEvent",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getEventsLength",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "getGracePeriod",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         }
      ],
      "name" : "getHistory",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_validator",
            "type" : "address"
         },
         {
            "internalType" : "uint256",
            "name" : "_epoch",
            "type" : "uint256"
         }
      ],
      "name" : "getSlashingHistory",
      "outputs" : [
         {
            "internalType" : "uint256",
            "name" : "",
            "type" : "uint256"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_val",
            "type" : "address"
         }
      ],
      "name" : "getValidatorAccusation",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "",
            "type" : "tuple"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address",
            "name" : "_val",
            "type" : "address"
         }
      ],
      "name" : "getValidatorFaults",
      "outputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event[]",
            "name" : "",
            "type" : "tuple[]"
         }
      ],
      "stateMutability" : "view",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "_event",
            "type" : "tuple"
         }
      ],
      "name" : "handleAccusation",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "_event",
            "type" : "tuple"
         }
      ],
      "name" : "handleInnocenceProof",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "_event",
            "type" : "tuple"
         }
      ],
      "name" : "handleMisbehaviour",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "_event",
            "type" : "tuple"
         }
      ],
      "name" : "handleValidAccusation",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "_event",
            "type" : "tuple"
         }
      ],
      "name" : "handleValidFaultProof",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "_event",
            "type" : "tuple"
         }
      ],
      "name" : "handleValidInnocenceProof",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "performSlashingTasks",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [],
      "name" : "promoteGuiltyAccusations",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "low",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "mid",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "high",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.BaseSlashingRates",
            "name" : "_rates",
            "type" : "tuple"
         }
      ],
      "name" : "setBaseSlashingRates",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "address[]",
            "name" : "_newCommittee",
            "type" : "address[]"
         }
      ],
      "name" : "setCommittee",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_delta",
            "type" : "uint256"
         }
      ],
      "name" : "setDelta",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "uint256",
                  "name" : "collusion",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "history",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "jail",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Factors",
            "name" : "_factors",
            "type" : "tuple"
         }
      ],
      "name" : "setFactors",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_window",
            "type" : "uint256"
         }
      ],
      "name" : "setInnocenceProofSubmissionWindow",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "internalType" : "uint256",
            "name" : "_range",
            "type" : "uint256"
         }
      ],
      "name" : "setRange",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   },
   {
      "inputs" : [
         {
            "components" : [
               {
                  "internalType" : "enum IAccountability.EventType",
                  "name" : "eventType",
                  "type" : "uint8"
               },
               {
                  "internalType" : "enum IAccountability.Rule",
                  "name" : "rule",
                  "type" : "uint8"
               },
               {
                  "internalType" : "address",
                  "name" : "reporter",
                  "type" : "address"
               },
               {
                  "internalType" : "address",
                  "name" : "offender",
                  "type" : "address"
               },
               {
                  "internalType" : "bytes",
                  "name" : "rawProof",
                  "type" : "bytes"
               },
               {
                  "internalType" : "uint256",
                  "name" : "id",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "block",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "epoch",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "reportingBlock",
                  "type" : "uint256"
               },
               {
                  "internalType" : "uint256",
                  "name" : "messageHash",
                  "type" : "uint256"
               }
            ],
            "internalType" : "struct IAccountability.Event",
            "name" : "_event",
            "type" : "tuple"
         },
         {
            "internalType" : "uint256",
            "name" : "_epochOffencesCount",
            "type" : "uint256"
         },
         {
            "internalType" : "uint256",
            "name" : "_epochPeriod",
            "type" : "uint256"
         }
      ],
      "name" : "slash",
      "outputs" : [],
      "stateMutability" : "nonpayable",
      "type" : "function"
   }
]
`))
