diff --git a/contracts/bindings/ERC20Mock/binding.go b/contracts/bindings/ERC20Mock/binding.go index bd3f1af5..f8b3a243 100644 --- a/contracts/bindings/ERC20Mock/binding.go +++ b/contracts/bindings/ERC20Mock/binding.go @@ -31,8 +31,8 @@ var ( // ContractERC20MockMetaData contains all meta data concerning the ContractERC20Mock contract. var ContractERC20MockMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x608060405234801561001057600080fd5b50610527806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c806340c10f191161005b57806340c10f19146100d257806370a08231146100e7578063a9059cbb14610110578063dd62ed3e1461012357600080fd5b8063095ea7b31461008257806318160ddd146100ad57806323b872dd146100bf575b600080fd5b610098610090366004610410565b600192915050565b60405190151581526020015b60405180910390f35b6002545b6040519081526020016100a4565b6100986100cd36600461043a565b61015c565b6100e56100e0366004610410565b610173565b005b6100b16100f5366004610476565b6001600160a01b031660009081526020819052604090205490565b61009861011e366004610410565b610181565b6100b1610131366004610498565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600061016984848461018b565b5060019392505050565b61017d8282610335565b5050565b6000336101698185855b6001600160a01b0383166101f45760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084015b60405180910390fd5b6001600160a01b0382166102565760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016101eb565b6001600160a01b0383166000908152602081905260409020548111156102cd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016101eb565b6001600160a01b038381166000818152602081815260408083208054879003905593861680835291849020805486019055925184815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b03821661038b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016101eb565b806002600082825461039d91906104cb565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b80356001600160a01b038116811461040b57600080fd5b919050565b6000806040838503121561042357600080fd5b61042c836103f4565b946020939093013593505050565b60008060006060848603121561044f57600080fd5b610458846103f4565b9250610466602085016103f4565b9150604084013590509250925092565b60006020828403121561048857600080fd5b610491826103f4565b9392505050565b600080604083850312156104ab57600080fd5b6104b4836103f4565b91506104c2602084016103f4565b90509250929050565b600082198211156104ec57634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212200c8f4a0047ca0322c22cf7e6a789abbe36ca3141cd508f864ec741dccdc347f964736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowance\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"approve\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"balanceOf\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decimals\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"decreaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"subtractedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"increaseAllowance\",\"inputs\":[{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"addedValue\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"mint\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"name\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"symbol\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transfer\",\"inputs\":[{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferFrom\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Approval\",\"inputs\":[{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Transfer\",\"inputs\":[{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x608060405234801561001057600080fd5b506040805160208082018084526000808452845192830190945292815281519192909161003f9160039161005b565b50805161005390600490602084019061005b565b50505061012f565b828054610067906100f4565b90600052602060002090601f01602090048101928261008957600085556100cf565b82601f106100a257805160ff19168380011785556100cf565b828001600101855582156100cf579182015b828111156100cf5782518255916020019190600101906100b4565b506100db9291506100df565b5090565b5b808211156100db57600081556001016100e0565b600181811c9082168061010857607f821691505b6020821081141561012957634e487b7160e01b600052602260045260246000fd5b50919050565b6109948061013e6000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c806340c10f191161007157806340c10f191461014157806370a082311461015657806395d89b411461017f578063a457c2d714610187578063a9059cbb1461019a578063dd62ed3e146101ad57600080fd5b806306fdde03146100b9578063095ea7b3146100d757806318160ddd146100fa57806323b872dd1461010c578063313ce5671461011f578063395093511461012e575b600080fd5b6100c16101c0565b6040516100ce91906107d1565b60405180910390f35b6100ea6100e5366004610842565b610252565b60405190151581526020016100ce565b6002545b6040519081526020016100ce565b6100ea61011a36600461086c565b61026a565b604051601281526020016100ce565b6100ea61013c366004610842565b61028e565b61015461014f366004610842565b6102b0565b005b6100fe6101643660046108a8565b6001600160a01b031660009081526020819052604090205490565b6100c16102be565b6100ea610195366004610842565b6102cd565b6100ea6101a8366004610842565b61034d565b6100fe6101bb3660046108ca565b61035b565b6060600380546101cf906108fd565b80601f01602080910402602001604051908101604052809291908181526020018280546101fb906108fd565b80156102485780601f1061021d57610100808354040283529160200191610248565b820191906000526020600020905b81548152906001019060200180831161022b57829003601f168201915b5050505050905090565b600033610260818585610386565b5060019392505050565b6000336102788582856104aa565b610283858585610524565b506001949350505050565b6000336102608185856102a1838361035b565b6102ab9190610938565b610386565b6102ba82826106f2565b5050565b6060600480546101cf906108fd565b600033816102db828661035b565b9050838110156103405760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102838286868403610386565b600033610260818585610524565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103e85760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610337565b6001600160a01b0382166104495760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610337565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60006104b6848461035b565b9050600019811461051e57818110156105115760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610337565b61051e8484848403610386565b50505050565b6001600160a01b0383166105885760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610337565b6001600160a01b0382166105ea5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610337565b6001600160a01b038316600090815260208190526040902054818110156106625760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610337565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610699908490610938565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106e591815260200190565b60405180910390a361051e565b6001600160a01b0382166107485760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610337565b806002600082825461075a9190610938565b90915550506001600160a01b03821660009081526020819052604081208054839290610787908490610938565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b600060208083528351808285015260005b818110156107fe578581018301518582016040015282016107e2565b81811115610810576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461083d57600080fd5b919050565b6000806040838503121561085557600080fd5b61085e83610826565b946020939093013593505050565b60008060006060848603121561088157600080fd5b61088a84610826565b925061089860208501610826565b9150604084013590509250925092565b6000602082840312156108ba57600080fd5b6108c382610826565b9392505050565b600080604083850312156108dd57600080fd5b6108e683610826565b91506108f460208401610826565b90509250929050565b600181811c9082168061091157607f821691505b6020821081141561093257634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561095957634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220befd580c8b200732255611dd35a48ded81b8060fbfb3a51a6cbb958959509f5464736f6c634300080c0033", } // ContractERC20MockABI is the input ABI used to generate the binding from. @@ -264,6 +264,99 @@ func (_ContractERC20Mock *ContractERC20MockCallerSession) BalanceOf(account comm return _ContractERC20Mock.Contract.BalanceOf(&_ContractERC20Mock.CallOpts, account) } +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ContractERC20Mock *ContractERC20MockCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ContractERC20Mock.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ContractERC20Mock *ContractERC20MockSession) Decimals() (uint8, error) { + return _ContractERC20Mock.Contract.Decimals(&_ContractERC20Mock.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ContractERC20Mock *ContractERC20MockCallerSession) Decimals() (uint8, error) { + return _ContractERC20Mock.Contract.Decimals(&_ContractERC20Mock.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ContractERC20Mock *ContractERC20MockCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ContractERC20Mock.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ContractERC20Mock *ContractERC20MockSession) Name() (string, error) { + return _ContractERC20Mock.Contract.Name(&_ContractERC20Mock.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ContractERC20Mock *ContractERC20MockCallerSession) Name() (string, error) { + return _ContractERC20Mock.Contract.Name(&_ContractERC20Mock.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ContractERC20Mock *ContractERC20MockCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ContractERC20Mock.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ContractERC20Mock *ContractERC20MockSession) Symbol() (string, error) { + return _ContractERC20Mock.Contract.Symbol(&_ContractERC20Mock.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ContractERC20Mock *ContractERC20MockCallerSession) Symbol() (string, error) { + return _ContractERC20Mock.Contract.Symbol(&_ContractERC20Mock.CallOpts) +} + // TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. // // Solidity: function totalSupply() view returns(uint256) @@ -297,23 +390,65 @@ func (_ContractERC20Mock *ContractERC20MockCallerSession) TotalSupply() (*big.In // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address , uint256 ) returns(bool) -func (_ContractERC20Mock *ContractERC20MockTransactor) Approve(opts *bind.TransactOpts, arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { - return _ContractERC20Mock.contract.Transact(opts, "approve", arg0, arg1) +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ContractERC20Mock *ContractERC20MockTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.contract.Transact(opts, "approve", spender, amount) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address , uint256 ) returns(bool) -func (_ContractERC20Mock *ContractERC20MockSession) Approve(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { - return _ContractERC20Mock.Contract.Approve(&_ContractERC20Mock.TransactOpts, arg0, arg1) +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ContractERC20Mock *ContractERC20MockSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.Contract.Approve(&_ContractERC20Mock.TransactOpts, spender, amount) } // Approve is a paid mutator transaction binding the contract method 0x095ea7b3. // -// Solidity: function approve(address , uint256 ) returns(bool) -func (_ContractERC20Mock *ContractERC20MockTransactorSession) Approve(arg0 common.Address, arg1 *big.Int) (*types.Transaction, error) { - return _ContractERC20Mock.Contract.Approve(&_ContractERC20Mock.TransactOpts, arg0, arg1) +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ContractERC20Mock *ContractERC20MockTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.Contract.Approve(&_ContractERC20Mock.TransactOpts, spender, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ContractERC20Mock *ContractERC20MockTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ContractERC20Mock *ContractERC20MockSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.Contract.DecreaseAllowance(&_ContractERC20Mock.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ContractERC20Mock *ContractERC20MockTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.Contract.DecreaseAllowance(&_ContractERC20Mock.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ContractERC20Mock *ContractERC20MockTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ContractERC20Mock *ContractERC20MockSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.Contract.IncreaseAllowance(&_ContractERC20Mock.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ContractERC20Mock *ContractERC20MockTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ContractERC20Mock.Contract.IncreaseAllowance(&_ContractERC20Mock.TransactOpts, spender, addedValue) } // Mint is a paid mutator transaction binding the contract method 0x40c10f19. diff --git a/contracts/bindings/IncredibleSquaringServiceManager/binding.go b/contracts/bindings/IncredibleSquaringServiceManager/binding.go index 3cb870d7..f5bbd96d 100644 --- a/contracts/bindings/IncredibleSquaringServiceManager/binding.go +++ b/contracts/bindings/IncredibleSquaringServiceManager/binding.go @@ -29,17 +29,17 @@ var ( _ = abi.ConvertType ) -// IPaymentCoordinatorRangePayment is an auto generated low-level Go binding around an user-defined struct. -type IPaymentCoordinatorRangePayment struct { - StrategiesAndMultipliers []IPaymentCoordinatorStrategyAndMultiplier +// IRewardsCoordinatorRewardsSubmission is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorRewardsSubmission struct { + StrategiesAndMultipliers []IRewardsCoordinatorStrategyAndMultiplier Token common.Address Amount *big.Int StartTimestamp uint32 Duration uint32 } -// IPaymentCoordinatorStrategyAndMultiplier is an auto generated low-level Go binding around an user-defined struct. -type IPaymentCoordinatorStrategyAndMultiplier struct { +// IRewardsCoordinatorStrategyAndMultiplier is an auto generated low-level Go binding around an user-defined struct. +type IRewardsCoordinatorStrategyAndMultiplier struct { Strategy common.Address Multiplier *big.Int } @@ -53,8 +53,8 @@ type ISignatureUtilsSignatureWithSaltAndExpiry struct { // ContractIncredibleSquaringServiceManagerMetaData contains all meta data concerning the ContractIncredibleSquaringServiceManager contract. var ContractIncredibleSquaringServiceManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"_incredibleSquaringTaskManager\",\"type\":\"address\",\"internalType\":\"contractIIncredibleSquaringTaskManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"freezeOperator\",\"inputs\":[{\"name\":\"operatorAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"incredibleSquaringTaskManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIIncredibleSquaringTaskManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"payForRange\",\"inputs\":[{\"name\":\"rangePayments\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.RangePayment[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIPaymentCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false}]", - Bin: "0x6101206040523480156200001257600080fd5b5060405162001b5f38038062001b5f83398101604081905262000035916200015a565b6001600160a01b03808516608052600060a081905281851660c05290831660e05284908484620000646200007f565b505050506001600160a01b03166101005250620001c2915050565b600054610100900460ff1615620000ec5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200013f576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200015757600080fd5b50565b600080600080608085870312156200017157600080fd5b84516200017e8162000141565b6020860151909450620001918162000141565b6040860151909350620001a48162000141565b6060860151909250620001b78162000141565b939692955090935050565b60805160a05160c05160e051610100516118e86200027760003960008181610151015261093b01526000818161065a015281816107b60152818161084d01528181610c7601528181610dfa0152610e99015260008181610485015281816105140152818161059401528181610a0801528181610a9e01528181610bb40152610d5501526000818161031501526103f301526000818161010c01528181610a5c01528181610afa0152610b7901526118e86000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80638da5cb5b116100715780638da5cb5b146101735780639926ee7d14610184578063a364f4da14610197578063a98fb355146101aa578063e481af9d146101bd578063f2fde38b146101c557600080fd5b80631b445516146100b957806333cfb7b7146100ce57806338c8ee64146100f75780636b3aa72e1461010a578063715018a61461014457806377ef731d1461014c575b600080fd5b6100cc6100c736600461118e565b6101d8565b005b6100e16100dc366004611218565b610460565b6040516100ee919061123c565b60405180910390f35b6100cc610105366004611218565b610930565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020016100ee565b6100cc6109e9565b61012c7f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b031661012c565b6100cc61019236600461133e565b6109fd565b6100cc6101a5366004611218565b610a93565b6100cc6101b83660046113e9565b610b5a565b6100e1610bae565b6100cc6101d3366004611218565b610f78565b6101e0610fee565b60005b818110156103db578282828181106101fd576101fd61143a565b905060200281019061020f9190611450565b610220906040810190602001611218565b6001600160a01b03166323b872dd33308686868181106102425761024261143a565b90506020028101906102549190611450565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af11580156102ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102cf9190611480565b508282828181106102e2576102e261143a565b90506020028101906102f49190611450565b610305906040810190602001611218565b6001600160a01b031663095ea7b37f00000000000000000000000000000000000000000000000000000000000000008585858181106103465761034661143a565b90506020028101906103589190611450565b604080516001600160e01b031960e086901b1681526001600160a01b039093166004840152013560248201526044016020604051808303816000875af11580156103a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ca9190611480565b506103d4816114b8565b90506101e3565b50604051630da22a8b60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690631b4455169061042a908590859060040161156c565b600060405180830381600087803b15801561044457600080fd5b505af1158015610458573d6000803e3d6000fd5b505050505050565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156104cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f0919061167a565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa15801561055b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061057f9190611693565b90506001600160c01b038116158061061957507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156105f0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061061491906116bc565b60ff16155b1561063557505060408051600081526020810190915292915050565b6000610649826001600160c01b0316611048565b90506000805b825181101561071f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f58483815181106106995761069961143a565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa1580156106dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610701919061167a565b61070b90836116df565b915080610717816114b8565b91505061064f565b5060008167ffffffffffffffff81111561073b5761073b611289565b604051908082528060200260200182016040528015610764578160200160208202803683370190505b5090506000805b84518110156109235760008582815181106107885761078861143a565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa1580156107fd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610821919061167a565b905060005b8181101561090d576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa15801561089b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108bf91906116f7565b600001518686815181106108d5576108d561143a565b6001600160a01b0390921660209283029190910190910152846108f7816114b8565b9550508080610905906114b8565b915050610826565b505050808061091b906114b8565b91505061076b565b5090979650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109e65760405162461bcd60e51b815260206004820152604a60248201527f6f6e6c79496e6372656469626c655371756172696e675461736b4d616e61676560448201527f723a206e6f742066726f6d206372656469626c65207371756172696e6720746160648201526939b59036b0b730b3b2b960b11b608482015260a4015b60405180910390fd5b50565b6109f1610fee565b6109fb600061110b565b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a455760405162461bcd60e51b81526004016109dd90611756565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d9061042a908590859060040161181b565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610adb5760405162461bcd60e51b81526004016109dd90611756565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015610b3f57600080fd5b505af1158015610b53573d6000803e3d6000fd5b5050505050565b610b62610fee565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610b25908490600401611866565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c3491906116bc565b60ff16905080610c5257505060408051600081526020810190915290565b6000805b82811015610d0757604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610cc5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce9919061167a565b610cf390836116df565b915080610cff816114b8565b915050610c56565b5060008167ffffffffffffffff811115610d2357610d23611289565b604051908082528060200260200182016040528015610d4c578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dd591906116bc565b60ff16811015610f6e57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6d919061167a565b905060005b81811015610f59576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610ee7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0b91906116f7565b60000151858581518110610f2157610f2161143a565b6001600160a01b039092166020928302919091019091015283610f43816114b8565b9450508080610f51906114b8565b915050610e72565b50508080610f66906114b8565b915050610d53565b5090949350505050565b610f80610fee565b6001600160a01b038116610fe55760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109dd565b6109e68161110b565b6033546001600160a01b031633146109fb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016109dd565b60606000806110568461115d565b61ffff1667ffffffffffffffff81111561107257611072611289565b6040519080825280601f01601f19166020018201604052801561109c576020820181803683370190505b5090506000805b8251821080156110b4575061010081105b15610f6e576001811b9350858416156110fb578060f81b8383815181106110dd576110dd61143a565b60200101906001600160f81b031916908160001a9053508160010191505b611104816114b8565b90506110a3565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000805b821561118857611172600184611879565b909216918061118081611890565b915050611161565b92915050565b600080602083850312156111a157600080fd5b823567ffffffffffffffff808211156111b957600080fd5b818501915085601f8301126111cd57600080fd5b8135818111156111dc57600080fd5b8660208260051b85010111156111f157600080fd5b60209290920196919550909350505050565b6001600160a01b03811681146109e657600080fd5b60006020828403121561122a57600080fd5b813561123581611203565b9392505050565b6020808252825182820181905260009190848201906040850190845b8181101561127d5783516001600160a01b031683529284019291840191600101611258565b50909695505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff811182821017156112c2576112c2611289565b60405290565b600067ffffffffffffffff808411156112e3576112e3611289565b604051601f8501601f19908116603f0116810190828211818310171561130b5761130b611289565b8160405280935085815286868601111561132457600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561135157600080fd5b823561135c81611203565b9150602083013567ffffffffffffffff8082111561137957600080fd5b908401906060828703121561138d57600080fd5b61139561129f565b8235828111156113a457600080fd5b83019150601f820187136113b757600080fd5b6113c6878335602085016112c8565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156113fb57600080fd5b813567ffffffffffffffff81111561141257600080fd5b8201601f8101841361142357600080fd5b611432848235602084016112c8565b949350505050565b634e487b7160e01b600052603260045260246000fd5b60008235609e1983360301811261146657600080fd5b9190910192915050565b803561147b81611203565b919050565b60006020828403121561149257600080fd5b8151801515811461123557600080fd5b634e487b7160e01b600052601160045260246000fd5b60006000198214156114cc576114cc6114a2565b5060010190565b6bffffffffffffffffffffffff811681146109e657600080fd5b8183526000602080850194508260005b8581101561154d57813561151081611203565b6001600160a01b0316875281830135611528816114d3565b6bffffffffffffffffffffffff168784015260409687019691909101906001016114fd565b509495945050505050565b803563ffffffff8116811461147b57600080fd5b60208082528181018390526000906040808401600586901b8501820187855b8881101561166c57878303603f190184528135368b9003609e190181126115b157600080fd5b8a0160a0813536839003601e190181126115ca57600080fd5b8201803567ffffffffffffffff8111156115e357600080fd5b8060061b36038413156115f557600080fd5b828752611607838801828c85016114ed565b92505050611616888301611470565b6001600160a01b03168886015281870135878601526060611638818401611558565b63ffffffff1690860152608061164f838201611558565b63ffffffff1695019490945250928501929085019060010161158b565b509098975050505050505050565b60006020828403121561168c57600080fd5b5051919050565b6000602082840312156116a557600080fd5b81516001600160c01b038116811461123557600080fd5b6000602082840312156116ce57600080fd5b815160ff8116811461123557600080fd5b600082198211156116f2576116f26114a2565b500190565b60006040828403121561170957600080fd5b6040516040810181811067ffffffffffffffff8211171561172c5761172c611289565b604052825161173a81611203565b8152602083015161174a816114d3565b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b818110156117f4576020818501810151868301820152016117d8565b81811115611806576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b038316815260406020820152600082516060604084015261184560a08401826117ce565b90506020840151606084015260408401516080840152809150509392505050565b60208152600061123560208301846117ce565b60008282101561188b5761188b6114a2565b500390565b600061ffff808316818114156118a8576118a86114a2565b600101939250505056fea2646970667358221220939ffbc2731160a3acf904aa502ec683052f07166493f46f16b3d34f23164d3664736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_avsDirectory\",\"type\":\"address\",\"internalType\":\"contractIAVSDirectory\"},{\"name\":\"_rewardsCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRewardsCoordinator\"},{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_stakeRegistry\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"},{\"name\":\"_incredibleSquaringTaskManager\",\"type\":\"address\",\"internalType\":\"contractIIncredibleSquaringTaskManager\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"avsDirectory\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createAVSRewardsSubmission\",\"inputs\":[{\"name\":\"rewardsSubmissions\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.RewardsSubmission[]\",\"components\":[{\"name\":\"strategiesAndMultipliers\",\"type\":\"tuple[]\",\"internalType\":\"structIRewardsCoordinator.StrategyAndMultiplier[]\",\"components\":[{\"name\":\"strategy\",\"type\":\"address\",\"internalType\":\"contractIStrategy\"},{\"name\":\"multiplier\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"contractIERC20\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"startTimestamp\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"duration\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"deregisterOperatorFromAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"freezeOperator\",\"inputs\":[{\"name\":\"operatorAddr\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"getOperatorRestakedStrategies\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRestakeableStrategies\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"incredibleSquaringTaskManager\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIIncredibleSquaringTaskManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"rewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"registerOperatorToAVS\",\"inputs\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorSignature\",\"type\":\"tuple\",\"internalType\":\"structISignatureUtils.SignatureWithSaltAndExpiry\",\"components\":[{\"name\":\"signature\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"expiry\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"rewardsInitiator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setRewardsInitiator\",\"inputs\":[{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"updateAVSMetadataURI\",\"inputs\":[{\"name\":\"_metadataURI\",\"type\":\"string\",\"internalType\":\"string\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RewardsInitiatorUpdated\",\"inputs\":[{\"name\":\"prevRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"newRewardsInitiator\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false}]", + Bin: "0x6101206040523480156200001257600080fd5b5060405162001fb038038062001fb0833981016040819052620000359162000159565b6001600160a01b0380861660805280851660a05280841660c052821660e05284848484620000626200007e565b505050506001600160a01b03166101005250620001d992505050565b600054610100900460ff1615620000eb5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811610156200013e576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6001600160a01b03811681146200015657600080fd5b50565b600080600080600060a086880312156200017257600080fd5b85516200017f8162000140565b6020870151909550620001928162000140565b6040870151909450620001a58162000140565b6060870151909350620001b88162000140565b6080870151909250620001cb8162000140565b809150509295509295909350565b60805160a05160c05160e05161010051611d1b62000295600039600081816101a5015261072d01526000818161044c015281816105a80152818161063f01528181610bc601528181610d4a0152610de9015260008181610277015281816103060152818161038601528181610922015281816109ee01528181610b040152610ca501526000818161108a0152818161114601526112320152600081816101600152818161097601528181610a4a0152610ac90152611d1b6000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638da5cb5b11610097578063e481af9d11610066578063e481af9d14610211578063f2fde38b14610219578063fc299dee1461022c578063fce36c7d1461023f57600080fd5b80638da5cb5b146101c75780639926ee7d146101d8578063a364f4da146101eb578063a98fb355146101fe57600080fd5b8063485cc955116100d3578063485cc9551461014b5780636b3aa72e1461015e578063715018a61461019857806377ef731d146101a057600080fd5b806333cfb7b7146100fa57806338c8ee64146101235780633bc28c8c14610138575b600080fd5b61010d61010836600461159d565b610252565b60405161011a91906115c1565b60405180910390f35b61013661013136600461159d565b610722565b005b61013661014636600461159d565b6107dd565b61013661015936600461160e565b6107ee565b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b03909116815260200161011a565b610136610903565b6101807f000000000000000000000000000000000000000000000000000000000000000081565b6033546001600160a01b0316610180565b6101366101e63660046116fc565b610917565b6101366101f936600461159d565b6109e3565b61013661020c3660046117a7565b610aaa565b61010d610afe565b61013661022736600461159d565b610ec8565b606554610180906001600160a01b031681565b61013661024d3660046117f8565b610f3e565b6040516309aa152760e11b81526001600160a01b0382811660048301526060916000917f000000000000000000000000000000000000000000000000000000000000000016906313542a4e90602401602060405180830381865afa1580156102be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102e2919061186d565b60405163871ef04960e01b8152600481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063871ef04990602401602060405180830381865afa15801561034d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103719190611886565b90506001600160c01b038116158061040b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061040691906118af565b60ff16155b1561042757505060408051600081526020810190915292915050565b600061043b826001600160c01b0316611269565b90506000805b8251811015610511577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316633ca5a5f584838151811061048b5761048b6118d2565b01602001516040516001600160e01b031960e084901b16815260f89190911c6004820152602401602060405180830381865afa1580156104cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f3919061186d565b6104fd90836118fe565b91508061050981611916565b915050610441565b5060008167ffffffffffffffff81111561052d5761052d611647565b604051908082528060200260200182016040528015610556578160200160208202803683370190505b5090506000805b845181101561071557600085828151811061057a5761057a6118d2565b0160200151604051633ca5a5f560e01b815260f89190911c6004820181905291506000906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690633ca5a5f590602401602060405180830381865afa1580156105ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610613919061186d565b905060005b818110156106ff576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa15801561068d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b1919061194b565b600001518686815181106106c7576106c76118d2565b6001600160a01b0390921660209283029190910190910152846106e981611916565b95505080806106f790611916565b915050610618565b505050808061070d90611916565b91505061055d565b5090979650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107da5760405162461bcd60e51b815260206004820152604c60248201527f6f6e6c79496e6372656469626c655371756172696e675461736b4d616e61676560448201527f723a206e6f742066726f6d20696e6372656469626c65207371756172696e672060648201526b3a30b9b59036b0b730b3b2b960a11b608482015260a4015b60405180910390fd5b50565b6107e561132c565b6107da81611386565b600054610100900460ff161580801561080e5750600054600160ff909116105b806108285750303b158015610828575060005460ff166001145b61088b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107d1565b6000805460ff1916600117905580156108ae576000805461ff0019166101001790555b6108b883836113ef565b80156108fe576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61090b61132c565b6109156000611470565b565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461095f5760405162461bcd60e51b81526004016107d1906119aa565b604051639926ee7d60e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690639926ee7d906109ad9085908590600401611a6f565b600060405180830381600087803b1580156109c757600080fd5b505af11580156109db573d6000803e3d6000fd5b505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a2b5760405162461bcd60e51b81526004016107d1906119aa565b6040516351b27a6d60e11b81526001600160a01b0382811660048301527f0000000000000000000000000000000000000000000000000000000000000000169063a364f4da906024015b600060405180830381600087803b158015610a8f57600080fd5b505af1158015610aa3573d6000803e3d6000fd5b5050505050565b610ab261132c565b60405163a98fb35560e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a98fb35590610a75908490600401611aba565b606060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8491906118af565b60ff16905080610ba257505060408051600081526020810190915290565b6000805b82811015610c5757604051633ca5a5f560e01b815260ff821660048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610c15573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c39919061186d565b610c4390836118fe565b915080610c4f81611916565b915050610ba6565b5060008167ffffffffffffffff811115610c7357610c73611647565b604051908082528060200260200182016040528015610c9c578160200160208202803683370190505b5090506000805b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316639aa1653d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d2591906118af565b60ff16811015610ebe57604051633ca5a5f560e01b815260ff821660048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690633ca5a5f590602401602060405180830381865afa158015610d99573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dbd919061186d565b905060005b81811015610ea9576040516356e4026d60e11b815260ff84166004820152602481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063adc804da906044016040805180830381865afa158015610e37573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e5b919061194b565b60000151858581518110610e7157610e716118d2565b6001600160a01b039092166020928302919091019091015283610e9381611916565b9450508080610ea190611916565b915050610dc2565b50508080610eb690611916565b915050610ca3565b5090949350505050565b610ed061132c565b6001600160a01b038116610f355760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016107d1565b6107da81611470565b610f466114c2565b60005b8181101561121a57828282818110610f6357610f636118d2565b9050602002810190610f759190611acd565b610f8690604081019060200161159d565b6001600160a01b03166323b872dd3330868686818110610fa857610fa86118d2565b9050602002810190610fba9190611acd565b604080516001600160e01b031960e087901b1681526001600160a01b039485166004820152939092166024840152013560448201526064016020604051808303816000875af1158015611011573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110359190611afd565b50600083838381811061104a5761104a6118d2565b905060200281019061105c9190611acd565b61106d90604081019060200161159d565b604051636eb1769f60e11b81523060048201526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166024830152919091169063dd62ed3e90604401602060405180830381865afa1580156110db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110ff919061186d565b9050838383818110611113576111136118d2565b90506020028101906111259190611acd565b61113690604081019060200161159d565b6001600160a01b031663095ea7b37f000000000000000000000000000000000000000000000000000000000000000083878787818110611178576111786118d2565b905060200281019061118a9190611acd565b6040013561119891906118fe565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303816000875af11580156111e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112079190611afd565b50508061121390611916565b9050610f49565b5060405163fce36c7d60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063fce36c7d906109ad9085908590600401611b9e565b606060008061127784611557565b61ffff1667ffffffffffffffff81111561129357611293611647565b6040519080825280601f01601f1916602001820160405280156112bd576020820181803683370190505b5090506000805b8251821080156112d5575061010081105b15610ebe576001811b93508584161561131c578060f81b8383815181106112fe576112fe6118d2565b60200101906001600160f81b031916908160001a9053508160010191505b61132581611916565b90506112c4565b6033546001600160a01b031633146109155760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107d1565b606554604080516001600160a01b03928316815291831660208301527fe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1661145a5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b60648201526084016107d1565b61146382611470565b61146c81611386565b5050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6065546001600160a01b031633146109155760405162461bcd60e51b815260206004820152604c60248201527f536572766963654d616e61676572426173652e6f6e6c7952657761726473496e60448201527f69746961746f723a2063616c6c6572206973206e6f742074686520726577617260648201526b32399034b734ba34b0ba37b960a11b608482015260a4016107d1565b6000805b82156115825761156c600184611cac565b909216918061157a81611cc3565b91505061155b565b92915050565b6001600160a01b03811681146107da57600080fd5b6000602082840312156115af57600080fd5b81356115ba81611588565b9392505050565b6020808252825182820181905260009190848201906040850190845b818110156116025783516001600160a01b0316835292840192918401916001016115dd565b50909695505050505050565b6000806040838503121561162157600080fd5b823561162c81611588565b9150602083013561163c81611588565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6040516060810167ffffffffffffffff8111828210171561168057611680611647565b60405290565b600067ffffffffffffffff808411156116a1576116a1611647565b604051601f8501601f19908116603f011681019082821181831017156116c9576116c9611647565b816040528093508581528686860111156116e257600080fd5b858560208301376000602087830101525050509392505050565b6000806040838503121561170f57600080fd5b823561171a81611588565b9150602083013567ffffffffffffffff8082111561173757600080fd5b908401906060828703121561174b57600080fd5b61175361165d565b82358281111561176257600080fd5b83019150601f8201871361177557600080fd5b61178487833560208501611686565b815260208301356020820152604083013560408201528093505050509250929050565b6000602082840312156117b957600080fd5b813567ffffffffffffffff8111156117d057600080fd5b8201601f810184136117e157600080fd5b6117f084823560208401611686565b949350505050565b6000806020838503121561180b57600080fd5b823567ffffffffffffffff8082111561182357600080fd5b818501915085601f83011261183757600080fd5b81358181111561184657600080fd5b8660208260051b850101111561185b57600080fd5b60209290920196919550909350505050565b60006020828403121561187f57600080fd5b5051919050565b60006020828403121561189857600080fd5b81516001600160c01b03811681146115ba57600080fd5b6000602082840312156118c157600080fd5b815160ff811681146115ba57600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008219821115611911576119116118e8565b500190565b600060001982141561192a5761192a6118e8565b5060010190565b6bffffffffffffffffffffffff811681146107da57600080fd5b60006040828403121561195d57600080fd5b6040516040810181811067ffffffffffffffff8211171561198057611980611647565b604052825161198e81611588565b8152602083015161199e81611931565b60208201529392505050565b60208082526052908201527f536572766963654d616e61676572426173652e6f6e6c7952656769737472794360408201527f6f6f7264696e61746f723a2063616c6c6572206973206e6f742074686520726560608201527133b4b9ba393c9031b7b7b93234b730ba37b960711b608082015260a00190565b6000815180845260005b81811015611a4857602081850181015186830182015201611a2c565b81811115611a5a576000602083870101525b50601f01601f19169290920160200192915050565b60018060a01b0383168152604060208201526000825160606040840152611a9960a0840182611a22565b90506020840151606084015260408401516080840152809150509392505050565b6020815260006115ba6020830184611a22565b60008235609e19833603018112611ae357600080fd5b9190910192915050565b8035611af881611588565b919050565b600060208284031215611b0f57600080fd5b815180151581146115ba57600080fd5b8183526000602080850194508260005b85811015611b7f578135611b4281611588565b6001600160a01b0316875281830135611b5a81611931565b6bffffffffffffffffffffffff16878401526040968701969190910190600101611b2f565b509495945050505050565b803563ffffffff81168114611af857600080fd5b60208082528181018390526000906040808401600586901b8501820187855b88811015611c9e57878303603f190184528135368b9003609e19018112611be357600080fd5b8a0160a0813536839003601e19018112611bfc57600080fd5b8201803567ffffffffffffffff811115611c1557600080fd5b8060061b3603841315611c2757600080fd5b828752611c39838801828c8501611b1f565b92505050611c48888301611aed565b6001600160a01b03168886015281870135878601526060611c6a818401611b8a565b63ffffffff16908601526080611c81838201611b8a565b63ffffffff16950194909452509285019290850190600101611bbd565b509098975050505050505050565b600082821015611cbe57611cbe6118e8565b500390565b600061ffff80831681811415611cdb57611cdb6118e8565b600101939250505056fea26469706673582212209021004350bcdac15ac26f2b55cd2e9b6d4ed0e10a0fc604d5ec7a95560bedd764736f6c634300080c0033", } // ContractIncredibleSquaringServiceManagerABI is the input ABI used to generate the binding from. @@ -66,7 +66,7 @@ var ContractIncredibleSquaringServiceManagerABI = ContractIncredibleSquaringServ var ContractIncredibleSquaringServiceManagerBin = ContractIncredibleSquaringServiceManagerMetaData.Bin // DeployContractIncredibleSquaringServiceManager deploys a new Ethereum contract, binding an instance of ContractIncredibleSquaringServiceManager to it. -func DeployContractIncredibleSquaringServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, _avsDirectory common.Address, _registryCoordinator common.Address, _stakeRegistry common.Address, _incredibleSquaringTaskManager common.Address) (common.Address, *types.Transaction, *ContractIncredibleSquaringServiceManager, error) { +func DeployContractIncredibleSquaringServiceManager(auth *bind.TransactOpts, backend bind.ContractBackend, _avsDirectory common.Address, _rewardsCoordinator common.Address, _registryCoordinator common.Address, _stakeRegistry common.Address, _incredibleSquaringTaskManager common.Address) (common.Address, *types.Transaction, *ContractIncredibleSquaringServiceManager, error) { parsed, err := ContractIncredibleSquaringServiceManagerMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -75,7 +75,7 @@ func DeployContractIncredibleSquaringServiceManager(auth *bind.TransactOpts, bac return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractIncredibleSquaringServiceManagerBin), backend, _avsDirectory, _registryCoordinator, _stakeRegistry, _incredibleSquaringTaskManager) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ContractIncredibleSquaringServiceManagerBin), backend, _avsDirectory, _rewardsCoordinator, _registryCoordinator, _stakeRegistry, _incredibleSquaringTaskManager) if err != nil { return common.Address{}, nil, nil, err } @@ -379,6 +379,58 @@ func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServi return _ContractIncredibleSquaringServiceManager.Contract.Owner(&_ContractIncredibleSquaringServiceManager.CallOpts) } +// RewardsInitiator is a free data retrieval call binding the contract method 0xfc299dee. +// +// Solidity: function rewardsInitiator() view returns(address) +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerCaller) RewardsInitiator(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ContractIncredibleSquaringServiceManager.contract.Call(opts, &out, "rewardsInitiator") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// RewardsInitiator is a free data retrieval call binding the contract method 0xfc299dee. +// +// Solidity: function rewardsInitiator() view returns(address) +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerSession) RewardsInitiator() (common.Address, error) { + return _ContractIncredibleSquaringServiceManager.Contract.RewardsInitiator(&_ContractIncredibleSquaringServiceManager.CallOpts) +} + +// RewardsInitiator is a free data retrieval call binding the contract method 0xfc299dee. +// +// Solidity: function rewardsInitiator() view returns(address) +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerCallerSession) RewardsInitiator() (common.Address, error) { + return _ContractIncredibleSquaringServiceManager.Contract.RewardsInitiator(&_ContractIncredibleSquaringServiceManager.CallOpts) +} + +// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. +// +// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactor) CreateAVSRewardsSubmission(opts *bind.TransactOpts, rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.contract.Transact(opts, "createAVSRewardsSubmission", rewardsSubmissions) +} + +// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. +// +// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.Contract.CreateAVSRewardsSubmission(&_ContractIncredibleSquaringServiceManager.TransactOpts, rewardsSubmissions) +} + +// CreateAVSRewardsSubmission is a paid mutator transaction binding the contract method 0xfce36c7d. +// +// Solidity: function createAVSRewardsSubmission(((address,uint96)[],address,uint256,uint32,uint32)[] rewardsSubmissions) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactorSession) CreateAVSRewardsSubmission(rewardsSubmissions []IRewardsCoordinatorRewardsSubmission) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.Contract.CreateAVSRewardsSubmission(&_ContractIncredibleSquaringServiceManager.TransactOpts, rewardsSubmissions) +} + // DeregisterOperatorFromAVS is a paid mutator transaction binding the contract method 0xa364f4da. // // Solidity: function deregisterOperatorFromAVS(address operator) returns() @@ -421,25 +473,25 @@ func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServi return _ContractIncredibleSquaringServiceManager.Contract.FreezeOperator(&_ContractIncredibleSquaringServiceManager.TransactOpts, operatorAddr) } -// PayForRange is a paid mutator transaction binding the contract method 0x1b445516. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function payForRange(((address,uint96)[],address,uint256,uint32,uint32)[] rangePayments) returns() -func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactor) PayForRange(opts *bind.TransactOpts, rangePayments []IPaymentCoordinatorRangePayment) (*types.Transaction, error) { - return _ContractIncredibleSquaringServiceManager.contract.Transact(opts, "payForRange", rangePayments) +// Solidity: function initialize(address initialOwner, address rewardsInitiator) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactor) Initialize(opts *bind.TransactOpts, initialOwner common.Address, rewardsInitiator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.contract.Transact(opts, "initialize", initialOwner, rewardsInitiator) } -// PayForRange is a paid mutator transaction binding the contract method 0x1b445516. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function payForRange(((address,uint96)[],address,uint256,uint32,uint32)[] rangePayments) returns() -func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerSession) PayForRange(rangePayments []IPaymentCoordinatorRangePayment) (*types.Transaction, error) { - return _ContractIncredibleSquaringServiceManager.Contract.PayForRange(&_ContractIncredibleSquaringServiceManager.TransactOpts, rangePayments) +// Solidity: function initialize(address initialOwner, address rewardsInitiator) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerSession) Initialize(initialOwner common.Address, rewardsInitiator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.Contract.Initialize(&_ContractIncredibleSquaringServiceManager.TransactOpts, initialOwner, rewardsInitiator) } -// PayForRange is a paid mutator transaction binding the contract method 0x1b445516. +// Initialize is a paid mutator transaction binding the contract method 0x485cc955. // -// Solidity: function payForRange(((address,uint96)[],address,uint256,uint32,uint32)[] rangePayments) returns() -func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactorSession) PayForRange(rangePayments []IPaymentCoordinatorRangePayment) (*types.Transaction, error) { - return _ContractIncredibleSquaringServiceManager.Contract.PayForRange(&_ContractIncredibleSquaringServiceManager.TransactOpts, rangePayments) +// Solidity: function initialize(address initialOwner, address rewardsInitiator) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactorSession) Initialize(initialOwner common.Address, rewardsInitiator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.Contract.Initialize(&_ContractIncredibleSquaringServiceManager.TransactOpts, initialOwner, rewardsInitiator) } // RegisterOperatorToAVS is a paid mutator transaction binding the contract method 0x9926ee7d. @@ -484,6 +536,27 @@ func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServi return _ContractIncredibleSquaringServiceManager.Contract.RenounceOwnership(&_ContractIncredibleSquaringServiceManager.TransactOpts) } +// SetRewardsInitiator is a paid mutator transaction binding the contract method 0x3bc28c8c. +// +// Solidity: function setRewardsInitiator(address newRewardsInitiator) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactor) SetRewardsInitiator(opts *bind.TransactOpts, newRewardsInitiator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.contract.Transact(opts, "setRewardsInitiator", newRewardsInitiator) +} + +// SetRewardsInitiator is a paid mutator transaction binding the contract method 0x3bc28c8c. +// +// Solidity: function setRewardsInitiator(address newRewardsInitiator) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerSession) SetRewardsInitiator(newRewardsInitiator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.Contract.SetRewardsInitiator(&_ContractIncredibleSquaringServiceManager.TransactOpts, newRewardsInitiator) +} + +// SetRewardsInitiator is a paid mutator transaction binding the contract method 0x3bc28c8c. +// +// Solidity: function setRewardsInitiator(address newRewardsInitiator) returns() +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerTransactorSession) SetRewardsInitiator(newRewardsInitiator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringServiceManager.Contract.SetRewardsInitiator(&_ContractIncredibleSquaringServiceManager.TransactOpts, newRewardsInitiator) +} + // TransferOwnership is a paid mutator transaction binding the contract method 0xf2fde38b. // // Solidity: function transferOwnership(address newOwner) returns() @@ -812,3 +885,138 @@ func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServi event.Raw = log return event, nil } + +// ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdatedIterator is returned from FilterRewardsInitiatorUpdated and is used to iterate over the raw logs and unpacked data for RewardsInitiatorUpdated events raised by the ContractIncredibleSquaringServiceManager contract. +type ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdatedIterator struct { + Event *ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated represents a RewardsInitiatorUpdated event raised by the ContractIncredibleSquaringServiceManager contract. +type ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated struct { + PrevRewardsInitiator common.Address + NewRewardsInitiator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterRewardsInitiatorUpdated is a free log retrieval operation binding the contract event 0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3. +// +// Solidity: event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator) +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerFilterer) FilterRewardsInitiatorUpdated(opts *bind.FilterOpts) (*ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdatedIterator, error) { + + logs, sub, err := _ContractIncredibleSquaringServiceManager.contract.FilterLogs(opts, "RewardsInitiatorUpdated") + if err != nil { + return nil, err + } + return &ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdatedIterator{contract: _ContractIncredibleSquaringServiceManager.contract, event: "RewardsInitiatorUpdated", logs: logs, sub: sub}, nil +} + +// WatchRewardsInitiatorUpdated is a free log subscription operation binding the contract event 0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3. +// +// Solidity: event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator) +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerFilterer) WatchRewardsInitiatorUpdated(opts *bind.WatchOpts, sink chan<- *ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated) (event.Subscription, error) { + + logs, sub, err := _ContractIncredibleSquaringServiceManager.contract.WatchLogs(opts, "RewardsInitiatorUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated) + if err := _ContractIncredibleSquaringServiceManager.contract.UnpackLog(event, "RewardsInitiatorUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseRewardsInitiatorUpdated is a log parse operation binding the contract event 0xe11cddf1816a43318ca175bbc52cd0185436e9cbead7c83acc54a73e461717e3. +// +// Solidity: event RewardsInitiatorUpdated(address prevRewardsInitiator, address newRewardsInitiator) +func (_ContractIncredibleSquaringServiceManager *ContractIncredibleSquaringServiceManagerFilterer) ParseRewardsInitiatorUpdated(log types.Log) (*ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated, error) { + event := new(ContractIncredibleSquaringServiceManagerRewardsInitiatorUpdated) + if err := _ContractIncredibleSquaringServiceManager.contract.UnpackLog(event, "RewardsInitiatorUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/contracts/bindings/IncredibleSquaringTaskManager/binding.go b/contracts/bindings/IncredibleSquaringTaskManager/binding.go index 6f6d68f7..231b4b35 100644 --- a/contracts/bindings/IncredibleSquaringTaskManager/binding.go +++ b/contracts/bindings/IncredibleSquaringTaskManager/binding.go @@ -75,7 +75,7 @@ type IIncredibleSquaringTaskManagerTaskResponse struct { // IIncredibleSquaringTaskManagerTaskResponseMetadata is an auto generated low-level Go binding around an user-defined struct. type IIncredibleSquaringTaskManagerTaskResponseMetadata struct { - TaskResponsedBlock uint32 + TaskRespondedBlock uint32 HashOfNonSigners [32]byte } @@ -96,8 +96,8 @@ type OperatorStateRetrieverOperator struct { // ContractIncredibleSquaringTaskManagerMetaData contains all meta data concerning the ContractIncredibleSquaringTaskManager contract. var ContractIncredibleSquaringTaskManagerMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_taskResponseWindowBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"TASK_CHALLENGE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TASK_RESPONSE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"aggregator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allTaskHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allTaskResponses\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createNewTask\",\"inputs\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"generator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCheckSignaturesIndices\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nonSignerOperatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorStateRetriever.CheckSignaturesIndices\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapsAtBlockNumber\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTaskResponseWindowBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_aggregator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestTaskNum\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"raiseAndResolveChallenge\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.Task\",\"components\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numberSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponseMetadata\",\"components\":[{\"name\":\"taskResponsedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"pubkeysOfNonSigningOperators\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"respondToTask\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.Task\",\"components\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numberSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskSuccesfullyChallenged\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewTaskCreated\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"task\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIIncredibleSquaringTaskManager.Task\",\"components\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskChallengedSuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskChallengedUnsuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskCompleted\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskResponded\",\"inputs\":[{\"name\":\"taskResponse\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numberSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponseMetadata\",\"components\":[{\"name\":\"taskResponsedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", - Bin: "0x6101206040523480156200001257600080fd5b5060405162005e9638038062005e968339810160408190526200003591620001f7565b81806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b591906200023e565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013391906200023e565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b391906200023e565b6001600160a01b031660e052506097805460ff1916600117905563ffffffff16610100525062000265565b6001600160a01b0381168114620001f457600080fd5b50565b600080604083850312156200020b57600080fd5b82516200021881620001de565b602084015190925063ffffffff811681146200023357600080fd5b809150509250929050565b6000602082840312156200025157600080fd5b81516200025e81620001de565b9392505050565b60805160a05160c05160e05161010051615b9f620002f76000396000818161027d0152818161059c015261195c0152600081816105650152612bee01526000818161041e0152818161224b0152612dd001526000818161044501528181612fa6015261316801526000818161049201528181610e0b015281816128d801528181612a510152612c8b0152615b9f6000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80636b532e9e116101255780638da5cb5b116100ad578063f2fde38b1161007c578063f2fde38b14610587578063f5c9899d1461059a578063f63c5bab146105c0578063f8c8765e146105c8578063fabc1cbc146105db57600080fd5b80638da5cb5b14610521578063b98d090814610532578063cefdc1d41461053f578063df5cf7231461056057600080fd5b8063715018a6116100f4578063715018a6146104d557806372d18e8d146104dd5780637afa1eed146104eb578063886f1195146104fe5780638b00ce7c1461051157600080fd5b80636b532e9e146104675780636b92787e1461047a5780636d14a9871461048d5780636efb4636146104b457600080fd5b80634f739f74116101a85780635c155662116101775780635c155662146103ce5780635c975abb146103ee5780635decc3f5146103f65780635df4594614610419578063683048351461044057600080fd5b80634f739f7414610360578063595c6a67146103805780635ac86ab7146103885780635baec9a0146103bb57600080fd5b8063245a7bfc116101ef578063245a7bfc146102b45780632cb223d5146102df5780632d89f6fc1461030d5780633563b0d11461032d578063416c7e5e1461034d57600080fd5b806310d67a2f14610221578063136439dd14610236578063171f1d5b146102495780631ad4318914610278575b600080fd5b61023461022f3660046146c1565b6105ee565b005b6102346102443660046146de565b6106aa565b61025c61025736600461485c565b6107e9565b6040805192151583529015156020830152015b60405180910390f35b61029f7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161026f565b60cd546102c7906001600160a01b031681565b6040516001600160a01b03909116815260200161026f565b6102ff6102ed3660046148ca565b60cb6020526000908152604090205481565b60405190815260200161026f565b6102ff61031b3660046148ca565b60ca6020526000908152604090205481565b61034061033b3660046148e7565b610973565b60405161026f9190614a42565b61023461035b366004614a6a565b610e09565b61037361036e366004614acf565b610f7e565b60405161026f9190614bd3565b6102346116a4565b6103ab610396366004614c9d565b606654600160ff9092169190911b9081161490565b604051901515815260200161026f565b6102346103c9366004614f88565b61176b565b6103e16103dc366004614ffc565b611bea565b60405161026f91906150a8565b6066546102ff565b6103ab6104043660046148ca565b60cc6020526000908152604090205460ff1681565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6102346104753660046150ec565b611db2565b610234610488366004615172565b612384565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6104c76104c23660046151cd565b612525565b60405161026f92919061528d565b61023461341d565b60c95463ffffffff1661029f565b60ce546102c7906001600160a01b031681565b6065546102c7906001600160a01b031681565b60c95461029f9063ffffffff1681565b6033546001600160a01b03166102c7565b6097546103ab9060ff1681565b61055261054d3660046152d6565b613431565b60405161026f929190615318565b6102c77f000000000000000000000000000000000000000000000000000000000000000081565b6102346105953660046146c1565b6135c3565b7f000000000000000000000000000000000000000000000000000000000000000061029f565b61029f606481565b6102346105d6366004615339565b613639565b6102346105e93660046146de565b61378a565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610641573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106659190615395565b6001600160a01b0316336001600160a01b03161461069e5760405162461bcd60e51b8152600401610695906153b2565b60405180910390fd5b6106a7816138e6565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156106f2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061071691906153fc565b6107325760405162461bcd60e51b815260040161069590615419565b606654818116146107ab5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610695565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018787600001518860200151886000015160006002811061083157610831615461565b60200201518951600160200201518a6020015160006002811061085657610856615461565b60200201518b6020015160016002811061087257610872615461565b602090810291909101518c518d8301516040516108cf9a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6108f29190615477565b905061096561090b61090488846139dd565b8690613a74565b610913613b08565b61095b61094c85610946604080518082018252600080825260209182015281518083019092526001825260029082015290565b906139dd565b6109558c613bc8565b90613a74565b886201d4c0613c58565b909890975095505050505050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109b5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109d99190615395565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3f9190615395565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a81573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa59190615395565b9050600086516001600160401b03811115610ac257610ac26146f7565b604051908082528060200260200182016040528015610af557816020015b6060815260200190600190039081610ae05790505b50905060005b8751811015610dfd576000888281518110610b1857610b18615461565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610b79573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610ba19190810190615499565b905080516001600160401b03811115610bbc57610bbc6146f7565b604051908082528060200260200182016040528015610c0757816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610bda5790505b50848481518110610c1a57610c1a615461565b602002602001018190525060005b8151811015610de7576040518060600160405280876001600160a01b03166347b314e8858581518110610c5d57610c5d615461565b60200260200101516040518263ffffffff1660e01b8152600401610c8391815260200190565b602060405180830381865afa158015610ca0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cc49190615395565b6001600160a01b03168152602001838381518110610ce457610ce4615461565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610d1257610d12615461565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610d6e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d929190615529565b6001600160601b0316815250858581518110610db057610db0615461565b60200260200101518281518110610dc957610dc9615461565b60200260200101819052508080610ddf90615568565b915050610c28565b5050508080610df590615568565b915050610afb565b50979650505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8b9190615395565b6001600160a01b0316336001600160a01b031614610f375760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610695565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b610fa96040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fe9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100d9190615395565b905061103a6040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e9061106a908b9089908990600401615583565b600060405180830381865afa158015611087573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110af91908101906155cd565b81526040516340e03a8160e11b81526001600160a01b038316906381c07502906110e1908b908b908b90600401615684565b600060405180830381865afa1580156110fe573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261112691908101906155cd565b6040820152856001600160401b03811115611143576111436146f7565b60405190808252806020026020018201604052801561117657816020015b60608152602001906001900390816111615790505b50606082015260005b60ff81168711156115b5576000856001600160401b038111156111a4576111a46146f7565b6040519080825280602002602001820160405280156111cd578160200160208202803683370190505b5083606001518360ff16815181106111e7576111e7615461565b602002602001018190525060005b868110156114b55760008c6001600160a01b03166304ec63518a8a8581811061122057611220615461565b905060200201358e8860000151868151811061123e5761123e615461565b60200260200101516040518463ffffffff1660e01b815260040161127b9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611298573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112bc91906156ad565b90506001600160c01b0381166113605760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a401610695565b8a8a8560ff1681811061137557611375615461565b6001600160c01b03841692013560f81c9190911c6001908116141590506114a257856001600160a01b031663dd9846b98a8a858181106113b7576113b7615461565b905060200201358d8d8860ff168181106113d3576113d3615461565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa158015611429573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061144d91906156d6565b85606001518560ff168151811061146657611466615461565b6020026020010151848151811061147f5761147f615461565b63ffffffff909216602092830291909101909101528261149e81615568565b9350505b50806114ad81615568565b9150506111f5565b506000816001600160401b038111156114d0576114d06146f7565b6040519080825280602002602001820160405280156114f9578160200160208202803683370190505b50905060005b8281101561157a5784606001518460ff168151811061152057611520615461565b6020026020010151818151811061153957611539615461565b602002602001015182828151811061155357611553615461565b63ffffffff909216602092830291909101909101528061157281615568565b9150506114ff565b508084606001518460ff168151811061159557611595615461565b6020026020010181905250505080806115ad906156f3565b91505061117f565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161a9190615395565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c9061164d908b908b908e90600401615713565b600060405180830381865afa15801561166a573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261169291908101906155cd565b60208301525098975050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa1580156116ec573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061171091906153fc565b61172c5760405162461bcd60e51b815260040161069590615419565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60cd546001600160a01b031633146117c55760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606401610695565b60006117d760408501602086016148ca565b90503660006117e9604087018761573d565b9092509050600061180060808801606089016148ca565b905060ca600061181360208901896148ca565b63ffffffff1663ffffffff168152602001908152602001600020548760405160200161183f9190615783565b60405160208183030381529060405280519060200120146118c85760405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610695565b600060cb816118da60208a018a6148ca565b63ffffffff1663ffffffff16815260200190815260200160002054146119575760405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608401610695565b6119817f000000000000000000000000000000000000000000000000000000000000000085615824565b63ffffffff164363ffffffff1611156119f25760405162461bcd60e51b815260206004820152602d60248201527f41676772656761746f722068617320726573706f6e64656420746f207468652060448201526c7461736b20746f6f206c61746560981b6064820152608401610695565b600086604051602001611a05919061586a565b604051602081830303815290604052805190602001209050600080611a2d8387878a8c612525565b9150915060005b85811015611b2c578460ff1683602001518281518110611a5657611a56615461565b6020026020010151611a689190615878565b6001600160601b0316606484600001518381518110611a8957611a89615461565b60200260200101516001600160601b0316611aa491906158a7565b1015611b1a576040805162461bcd60e51b81526020600482015260248101919091527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152608401610695565b80611b2481615568565b915050611a34565b5060408051808201825263ffffffff43168152602080820184905291519091611b59918c918491016158c6565b6040516020818303038152906040528051906020012060cb60008c6000016020810190611b8691906148ca565b63ffffffff1663ffffffff168152602001908152602001600020819055507f349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a8a82604051611bd59291906158c6565b60405180910390a15050505050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401611c1c9291906158f2565b600060405180830381865afa158015611c39573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611c6191908101906155cd565b9050600084516001600160401b03811115611c7e57611c7e6146f7565b604051908082528060200260200182016040528015611ca7578160200160208202803683370190505b50905060005b8551811015611da857866001600160a01b03166304ec6351878381518110611cd757611cd7615461565b602002602001015187868581518110611cf257611cf2615461565b60200260200101516040518463ffffffff1660e01b8152600401611d2f9392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611d4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d7091906156ad565b6001600160c01b0316828281518110611d8b57611d8b615461565b602090810291909101015280611da081615568565b915050611cad565b5095945050505050565b6000611dc160208501856148ca565b63ffffffff8116600090815260cb6020526040902054909150853590611e335760405162461bcd60e51b815260206004820152602160248201527f5461736b206861736e2774206265656e20726573706f6e64656420746f2079656044820152601d60fa1b6064820152608401610695565b8484604051602001611e46929190615946565b60408051601f19818403018152918152815160209283012063ffffffff8516600090815260cb90935291205414611ee55760405162461bcd60e51b815260206004820152603d60248201527f5461736b20726573706f6e736520646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610695565b63ffffffff8216600090815260cc602052604090205460ff1615611f7d5760405162461bcd60e51b815260206004820152604360248201527f54686520726573706f6e736520746f2074686973207461736b2068617320616c60448201527f7265616479206265656e206368616c6c656e676564207375636365737366756c606482015262363c9760e91b608482015260a401610695565b6064611f8c60208601866148ca565b611f969190615824565b63ffffffff164363ffffffff1611156120175760405162461bcd60e51b815260206004820152603760248201527f546865206368616c6c656e676520706572696f6420666f72207468697320746160448201527f736b2068617320616c726561647920657870697265642e0000000000000000006064820152608401610695565b600061202382806158a7565b905060208601358114600181141561207157604051339063ffffffff8616907ffd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb0590600090a35050505061237e565b600085516001600160401b0381111561208c5761208c6146f7565b6040519080825280602002602001820160405280156120b5578160200160208202803683370190505b50905060005b8651811015612127576120f88782815181106120d9576120d9615461565b6020026020010151805160009081526020918201519091526040902090565b82828151811061210a5761210a615461565b60209081029190910101528061211f81615568565b9150506120bb565b50600061213a60408b0160208c016148ca565b8260405160200161214c92919061597c565b604051602081830303815290604052805190602001209050876020013581146121f65760405162461bcd60e51b815260206004820152605060248201527f546865207075626b657973206f66206e6f6e2d7369676e696e67206f7065726160448201527f746f727320737570706c69656420627920746865206368616c6c656e6765722060648201526f30b932903737ba1031b7b93932b1ba1760811b608482015260a401610695565b600087516001600160401b03811115612211576122116146f7565b60405190808252806020026020018201604052801561223a578160200160208202803683370190505b50905060005b885181101561232d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e8bb9ae685838151811061228a5761228a615461565b60200260200101516040518263ffffffff1660e01b81526004016122b091815260200190565b602060405180830381865afa1580156122cd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122f19190615395565b82828151811061230357612303615461565b6001600160a01b03909216602092830291909101909101528061232581615568565b915050612240565b5063ffffffff8716600081815260cc6020526040808220805460ff19166001179055513392917fc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec91a3505050505050505b50505050565b60ce546001600160a01b031633146123e85760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608401610695565b61241f604051806080016040528060008152602001600063ffffffff16815260200160608152602001600063ffffffff1681525090565b84815263ffffffff438116602080840191909152908516606083015260408051601f8501839004830281018301909152838152908490849081908401838280828437600092019190915250505050604080830191909152516124859082906020016159c4565b60408051601f19818403018152828252805160209182012060c9805463ffffffff908116600090815260ca90945293909220555416907f1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c48906124e89084906159c4565b60405180910390a260c9546125049063ffffffff166001615824565b60c9805463ffffffff191663ffffffff929092169190911790555050505050565b604080518082019091526060808252602082015260008461259c5760405162461bcd60e51b81526020600482015260376024820152600080516020615b4a83398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610695565b604083015151851480156125b4575060a08301515185145b80156125c4575060c08301515185145b80156125d4575060e08301515185145b61263e5760405162461bcd60e51b81526020600482015260416024820152600080516020615b4a83398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610695565b825151602084015151146126b65760405162461bcd60e51b815260206004820152604460248201819052600080516020615b4a833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610695565b4363ffffffff168463ffffffff16106127255760405162461bcd60e51b815260206004820152603c6024820152600080516020615b4a83398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610695565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b03811115612766576127666146f7565b60405190808252806020026020018201604052801561278f578160200160208202803683370190505b506020820152866001600160401b038111156127ad576127ad6146f7565b6040519080825280602002602001820160405280156127d6578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b0381111561280a5761280a6146f7565b604051908082528060200260200182016040528015612833578160200160208202803683370190505b5081526020860151516001600160401b03811115612853576128536146f7565b60405190808252806020026020018201604052801561287c578160200160208202803683370190505b508160200181905250600061294e8a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015612925573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129499190615a4f565b613e7c565b905060005b876020015151811015612bca57612979886020015182815181106120d9576120d9615461565b8360200151828151811061298f5761298f615461565b60209081029190910101528015612a4f5760208301516129b0600183615a6c565b815181106129c0576129c0615461565b602002602001015160001c836020015182815181106129e1576129e1615461565b602002602001015160001c11612a4f576040805162461bcd60e51b8152602060048201526024810191909152600080516020615b4a83398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610695565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110612a9457612a94615461565b60200260200101518b8b600001518581518110612ab357612ab3615461565b60200260200101516040518463ffffffff1660e01b8152600401612af09392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015612b0d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3191906156ad565b6001600160c01b031683600001518281518110612b5057612b50615461565b602002602001018181525050612bb6610904612b8a8486600001518581518110612b7c57612b7c615461565b602002602001015116613f0f565b8a602001518481518110612ba057612ba0615461565b6020026020010151613f3a90919063ffffffff16565b945080612bc281615568565b915050612953565b5050612bd58361401e565b60975490935060ff16600081612bec576000612c6e565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612c4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c6e9190615a83565b905060005b8a8110156132ec578215612dce578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110612cca57612cca615461565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015612d0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d2e9190615a83565b612d389190615a9c565b11612dce5760405162461bcd60e51b81526020600482015260666024820152600080516020615b4a83398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610695565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d84818110612e0f57612e0f615461565b9050013560f81c60f81b60f81c8c8c60a001518581518110612e3357612e33615461565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015612e8f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eb39190615ab4565b6001600160401b031916612ed68a6040015183815181106120d9576120d9615461565b67ffffffffffffffff191614612f725760405162461bcd60e51b81526020600482015260616024820152600080516020615b4a83398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610695565b612fa289604001518281518110612f8b57612f8b615461565b602002602001015187613a7490919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d84818110612fe557612fe5615461565b9050013560f81c60f81b60f81c8c8c60c00151858151811061300957613009615461565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015613065573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130899190615529565b8560200151828151811061309f5761309f615461565b6001600160601b039092166020928302919091018201528501518051829081106130cb576130cb615461565b6020026020010151856000015182815181106130e9576130e9615461565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a60200151518110156132d7576131618660000151828151811061313357613133615461565b60200260200101518f8f8681811061314d5761314d615461565b600192013560f81c9290921c811614919050565b156132c5577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f868181106131a7576131a7615461565b9050013560f81c60f81b60f81c8e896020015185815181106131cb576131cb615461565b60200260200101518f60e0015188815181106131e9576131e9615461565b6020026020010151878151811061320257613202615461565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa158015613266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328a9190615529565b875180518590811061329e5761329e615461565b602002602001018181516132b29190615adf565b6001600160601b03169052506001909101905b806132cf81615568565b91505061310d565b505080806132e490615568565b915050612c73565b5050506000806133068c868a606001518b608001516107e9565b91509150816133775760405162461bcd60e51b81526020600482015260436024820152600080516020615b4a83398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610695565b806133d85760405162461bcd60e51b81526020600482015260396024820152600080516020615b4a83398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610695565b505060008782602001516040516020016133f392919061597c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6134256140b9565b61342f6000614113565b565b604080516001808252818301909252600091606091839160208083019080368337019050509050848160008151811061346c5761346c615461565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e906134a890889086906004016158f2565b600060405180830381865afa1580156134c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526134ed91908101906155cd565b6000815181106134ff576134ff615461565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa15801561356b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061358f91906156ad565b6001600160c01b0316905060006135a582614165565b9050816135b38a838a610973565b9550955050505050935093915050565b6135cb6140b9565b6001600160a01b0381166136305760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610695565b6106a781614113565b600054610100900460ff16158080156136595750600054600160ff909116105b806136735750303b158015613673575060005460ff166001145b6136d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610695565b6000805460ff1916600117905580156136f9576000805461ff0019166101001790555b613704856000614231565b61370d84614113565b60cd80546001600160a01b038086166001600160a01b03199283161790925560ce8054928516929091169190911790558015613783576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156137dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138019190615395565b6001600160a01b0316336001600160a01b0316146138315760405162461bcd60e51b8152600401610695906153b2565b6066541981196066541916146138af5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610695565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c906020016107de565b6001600160a01b0381166139745760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610695565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b60408051808201909152600080825260208201526139f96145d2565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015613a2c57613a2e565bfe5b5080613a6c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610695565b505092915050565b6040805180820190915260008082526020820152613a906145f0565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015613a2c575080613a6c5760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610695565b613b1061460e565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613bf8600080516020615b2a83398151915286615477565b90505b613c048161431b565b9093509150600080516020615b2a833981519152828309831415613c3e576040805180820190915290815260208101919091529392505050565b600080516020615b2a833981519152600182089050613bfb565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613c8a614633565b60005b6002811015613e4f576000613ca38260066158a7565b9050848260028110613cb757613cb7615461565b60200201515183613cc9836000615a9c565b600c8110613cd957613cd9615461565b6020020152848260028110613cf057613cf0615461565b60200201516020015183826001613d079190615a9c565b600c8110613d1757613d17615461565b6020020152838260028110613d2e57613d2e615461565b6020020151515183613d41836002615a9c565b600c8110613d5157613d51615461565b6020020152838260028110613d6857613d68615461565b6020020151516001602002015183613d81836003615a9c565b600c8110613d9157613d91615461565b6020020152838260028110613da857613da8615461565b602002015160200151600060028110613dc357613dc3615461565b602002015183613dd4836004615a9c565b600c8110613de457613de4615461565b6020020152838260028110613dfb57613dfb615461565b602002015160200151600160028110613e1657613e16615461565b602002015183613e27836005615a9c565b600c8110613e3757613e37615461565b60200201525080613e4781615568565b915050613c8d565b50613e58614652565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b600080613e888461439d565b9050808360ff166001901b11613f065760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610695565b90505b92915050565b6000805b8215613f0957613f24600184615a6c565b9092169180613f3281615b07565b915050613f13565b60408051808201909152600080825260208201526102008261ffff1610613f965760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610695565b8161ffff1660011415613faa575081613f09565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061401357600161ffff871660ff83161c81161415613ff657613ff38484613a74565b93505b6140008384613a74565b92506201fffe600192831b169101613fc6565b509195945050505050565b6040805180820190915260008082526020820152815115801561404357506020820151155b15614061575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615b2a83398151915284602001516140949190615477565b6140ac90600080516020615b2a833981519152615a6c565b905292915050565b919050565b6033546001600160a01b0316331461342f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610695565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b606060008061417384613f0f565b61ffff166001600160401b0381111561418e5761418e6146f7565b6040519080825280601f01601f1916602001820160405280156141b8576020820181803683370190505b5090506000805b8251821080156141d0575061010081105b15614227576001811b935085841615614217578060f81b8383815181106141f9576141f9615461565b60200101906001600160f81b031916908160001a9053508160010191505b61422081615568565b90506141bf565b5090949350505050565b6065546001600160a01b031615801561425257506001600160a01b03821615155b6142d45760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610695565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2614317826138e6565b5050565b60008080600080516020615b2a8339815191526003600080516020615b2a83398151915286600080516020615b2a833981519152888909090890506000614391827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615b2a83398151915261452a565b91959194509092505050565b6000610100825111156144265760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610695565b815161443457506000919050565b6000808360008151811061444a5761444a615461565b0160200151600160f89190911c81901b92505b84518110156145215784818151811061447857614478615461565b0160200151600160f89190911c1b915082821161450d5760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610695565b9181179161451a81615568565b905061445d565b50909392505050565b600080614535614652565b61453d614670565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015613a2c5750826145c75760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610695565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b604051806040016040528061462161468e565b815260200161462e61468e565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b03811681146106a757600080fd5b6000602082840312156146d357600080fd5b8135613f06816146ac565b6000602082840312156146f057600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561472f5761472f6146f7565b60405290565b60405161010081016001600160401b038111828210171561472f5761472f6146f7565b604051601f8201601f191681016001600160401b0381118282101715614780576147806146f7565b604052919050565b60006040828403121561479a57600080fd5b6147a261470d565b9050813581526020820135602082015292915050565b600082601f8301126147c957600080fd5b604051604081018181106001600160401b03821117156147eb576147eb6146f7565b806040525080604084018581111561480257600080fd5b845b81811015614013578035835260209283019201614804565b60006080828403121561482e57600080fd5b61483661470d565b905061484283836147b8565b815261485183604084016147b8565b602082015292915050565b600080600080610120858703121561487357600080fd5b843593506148848660208701614788565b9250614893866060870161481c565b91506148a28660e08701614788565b905092959194509250565b63ffffffff811681146106a757600080fd5b80356140b4816148ad565b6000602082840312156148dc57600080fd5b8135613f06816148ad565b6000806000606084860312156148fc57600080fd5b8335614907816146ac565b92506020848101356001600160401b038082111561492457600080fd5b818701915087601f83011261493857600080fd5b81358181111561494a5761494a6146f7565b61495c601f8201601f19168501614758565b9150808252888482850101111561497257600080fd5b8084840185840137600084828401015250809450505050614995604085016148bf565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015614a34578385038a52825180518087529087019087870190845b81811015614a1f57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b031690840152928901926060909201916001016149db565b50509a87019a955050918501916001016149bd565b509298975050505050505050565b602081526000614a55602083018461499e565b9392505050565b80151581146106a757600080fd5b600060208284031215614a7c57600080fd5b8135613f0681614a5c565b60008083601f840112614a9957600080fd5b5081356001600160401b03811115614ab057600080fd5b602083019150836020828501011115614ac857600080fd5b9250929050565b60008060008060008060808789031215614ae857600080fd5b8635614af3816146ac565b95506020870135614b03816148ad565b945060408701356001600160401b0380821115614b1f57600080fd5b614b2b8a838b01614a87565b90965094506060890135915080821115614b4457600080fd5b818901915089601f830112614b5857600080fd5b813581811115614b6757600080fd5b8a60208260051b8501011115614b7c57600080fd5b6020830194508093505050509295509295509295565b600081518084526020808501945080840160005b83811015614bc857815163ffffffff1687529582019590820190600101614ba6565b509495945050505050565b600060208083528351608082850152614bef60a0850182614b92565b905081850151601f1980868403016040870152614c0c8383614b92565b92506040870151915080868403016060870152614c298383614b92565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b82811015614c805784878303018452614c6e828751614b92565b95880195938801939150600101614c54565b509998505050505050505050565b60ff811681146106a757600080fd5b600060208284031215614caf57600080fd5b8135613f0681614c8e565b600060808284031215614ccc57600080fd5b50919050565b600060408284031215614ccc57600080fd5b60006001600160401b03821115614cfd57614cfd6146f7565b5060051b60200190565b600082601f830112614d1857600080fd5b81356020614d2d614d2883614ce4565b614758565b82815260059290921b84018101918181019086841115614d4c57600080fd5b8286015b84811015614d70578035614d63816148ad565b8352918301918301614d50565b509695505050505050565b600082601f830112614d8c57600080fd5b81356020614d9c614d2883614ce4565b82815260069290921b84018101918181019086841115614dbb57600080fd5b8286015b84811015614d7057614dd18882614788565b835291830191604001614dbf565b600082601f830112614df057600080fd5b81356020614e00614d2883614ce4565b82815260059290921b84018101918181019086841115614e1f57600080fd5b8286015b84811015614d705780356001600160401b03811115614e425760008081fd5b614e508986838b0101614d07565b845250918301918301614e23565b60006101808284031215614e7157600080fd5b614e79614735565b905081356001600160401b0380821115614e9257600080fd5b614e9e85838601614d07565b83526020840135915080821115614eb457600080fd5b614ec085838601614d7b565b60208401526040840135915080821115614ed957600080fd5b614ee585838601614d7b565b6040840152614ef7856060860161481c565b6060840152614f098560e08601614788565b6080840152610120840135915080821115614f2357600080fd5b614f2f85838601614d07565b60a0840152610140840135915080821115614f4957600080fd5b614f5585838601614d07565b60c0840152610160840135915080821115614f6f57600080fd5b50614f7c84828501614ddf565b60e08301525092915050565b600080600060808486031215614f9d57600080fd5b83356001600160401b0380821115614fb457600080fd5b614fc087838801614cba565b9450614fcf8760208801614cd2565b93506060860135915080821115614fe557600080fd5b50614ff286828701614e5e565b9150509250925092565b60008060006060848603121561501157600080fd5b833561501c816146ac565b92506020848101356001600160401b0381111561503857600080fd5b8501601f8101871361504957600080fd5b8035615057614d2882614ce4565b81815260059190911b8201830190838101908983111561507657600080fd5b928401925b828410156150945783358252928401929084019061507b565b8096505050505050614995604085016148bf565b6020808252825182820181905260009190848201906040850190845b818110156150e0578351835292840192918401916001016150c4565b50909695505050505050565b60008060008060c0858703121561510257600080fd5b84356001600160401b038082111561511957600080fd5b61512588838901614cba565b95506151348860208901614cd2565b94506151438860608901614cd2565b935060a087013591508082111561515957600080fd5b5061516687828801614d7b565b91505092959194509250565b6000806000806060858703121561518857600080fd5b84359350602085013561519a816148ad565b925060408501356001600160401b038111156151b557600080fd5b6151c187828801614a87565b95989497509550505050565b6000806000806000608086880312156151e557600080fd5b8535945060208601356001600160401b038082111561520357600080fd5b61520f89838a01614a87565b909650945060408801359150615224826148ad565b9092506060870135908082111561523a57600080fd5b5061524788828901614e5e565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614bc85781516001600160601b031687529582019590820190600101615268565b60408152600083516040808401526152a86080840182615254565b90506020850151603f198483030160608501526152c58282615254565b925050508260208301529392505050565b6000806000606084860312156152eb57600080fd5b83356152f6816146ac565b925060208401359150604084013561530d816148ad565b809150509250925092565b828152604060208201526000615331604083018461499e565b949350505050565b6000806000806080858703121561534f57600080fd5b843561535a816146ac565b9350602085013561536a816146ac565b9250604085013561537a816146ac565b9150606085013561538a816146ac565b939692955090935050565b6000602082840312156153a757600080fd5b8151613f06816146ac565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561540e57600080fd5b8151613f0681614a5c565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261549457634e487b7160e01b600052601260045260246000fd5b500690565b600060208083850312156154ac57600080fd5b82516001600160401b038111156154c257600080fd5b8301601f810185136154d357600080fd5b80516154e1614d2882614ce4565b81815260059190911b8201830190838101908783111561550057600080fd5b928401925b8284101561551e57835182529284019290840190615505565b979650505050505050565b60006020828403121561553b57600080fd5b81516001600160601b0381168114613f0657600080fd5b634e487b7160e01b600052601160045260246000fd5b600060001982141561557c5761557c615552565b5060010190565b63ffffffff84168152604060208201819052810182905260006001600160fb1b038311156155b057600080fd5b8260051b8085606085013760009201606001918252509392505050565b600060208083850312156155e057600080fd5b82516001600160401b038111156155f657600080fd5b8301601f8101851361560757600080fd5b8051615615614d2882614ce4565b81815260059190911b8201830190838101908783111561563457600080fd5b928401925b8284101561551e57835161564c816148ad565b82529284019290840190615639565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff841681526040602082015260006156a460408301848661565b565b95945050505050565b6000602082840312156156bf57600080fd5b81516001600160c01b0381168114613f0657600080fd5b6000602082840312156156e857600080fd5b8151613f06816148ad565b600060ff821660ff81141561570a5761570a615552565b60010192915050565b60408152600061572760408301858761565b565b905063ffffffff83166020830152949350505050565b6000808335601e1984360301811261575457600080fd5b8301803591506001600160401b0382111561576e57600080fd5b602001915036819003821315614ac857600080fd5b60208152813560208201526000602083013561579e816148ad565b63ffffffff81166040840152506040830135601e198436030181126157c257600080fd5b830180356001600160401b038111156157da57600080fd5b8036038513156157e957600080fd5b6080606085015261580160a08501826020850161565b565b915050615810606085016148bf565b63ffffffff81166080850152509392505050565b600063ffffffff80831681851680830382111561584357615843615552565b01949350505050565b8035615857816148ad565b63ffffffff168252602090810135910152565b60408101613f09828461584c565b60006001600160601b038083168185168183048111821515161561589e5761589e615552565b02949350505050565b60008160001904831182151516156158c1576158c1615552565b500290565b608081016158d4828561584c565b63ffffffff8351166040830152602083015160608301529392505050565b60006040820163ffffffff851683526020604081850152818551808452606086019150828701935060005b818110156159395784518352938301939183019160010161591d565b5090979650505050505050565b60808101615954828561584c565b823561595f816148ad565b63ffffffff16604083015260209290920135606090910152919050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b838110156159b75781518552938201939082019060010161599b565b5092979650505050505050565b6000602080835283518184015263ffffffff8185015116604084015260408401516080606085015280518060a086015260005b81811015615a135782810184015186820160c0015283016159f7565b81811115615a2557600060c083880101525b50606086015163ffffffff811660808701529250601f01601f19169390930160c001949350505050565b600060208284031215615a6157600080fd5b8151613f0681614c8e565b600082821015615a7e57615a7e615552565b500390565b600060208284031215615a9557600080fd5b5051919050565b60008219821115615aaf57615aaf615552565b500190565b600060208284031215615ac657600080fd5b815167ffffffffffffffff1981168114613f0657600080fd5b60006001600160601b0383811690831681811015615aff57615aff615552565b039392505050565b600061ffff80831681811415615b1f57615b1f615552565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a2646970667358221220f43d3574c3acebcece2bc7051e60a5c5dc7c8feae0125c754c62da48277a982664736f6c634300080c0033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"_taskResponseWindowBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"TASK_CHALLENGE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"TASK_RESPONSE_WINDOW_BLOCK\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"aggregator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allTaskHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"allTaskResponses\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"blsApkRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIBLSApkRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkSignatures\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.QuorumStakeTotals\",\"components\":[{\"name\":\"signedStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"},{\"name\":\"totalStakeForQuorum\",\"type\":\"uint96[]\",\"internalType\":\"uint96[]\"}]},{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"createNewTask\",\"inputs\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"delegation\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIDelegationManager\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"generator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBatchOperatorFromId\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getBatchOperatorId\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operators\",\"type\":\"address[]\",\"internalType\":\"address[]\"}],\"outputs\":[{\"name\":\"operatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getCheckSignaturesIndices\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"referenceBlockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"nonSignerOperatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structOperatorStateRetriever.CheckSignaturesIndices\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getOperatorState\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"\",\"type\":\"tuple[][]\",\"internalType\":\"structOperatorStateRetriever.Operator[][]\",\"components\":[{\"name\":\"operator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"operatorId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"stake\",\"type\":\"uint96\",\"internalType\":\"uint96\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getQuorumBitmapsAtBlockNumber\",\"inputs\":[{\"name\":\"registryCoordinator\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"},{\"name\":\"operatorIds\",\"type\":\"bytes32[]\",\"internalType\":\"bytes32[]\"},{\"name\":\"blockNumber\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getTaskResponseWindowBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"_pauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"initialOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_aggregator\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_generator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"latestTaskNum\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pauseAll\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[{\"name\":\"index\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"paused\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"pauserRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"raiseAndResolveChallenge\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.Task\",\"components\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numberSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponseMetadata\",\"components\":[{\"name\":\"taskRespondedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]},{\"name\":\"pubkeysOfNonSigningOperators\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"registryCoordinator\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIRegistryCoordinator\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"respondToTask\",\"inputs\":[{\"name\":\"task\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.Task\",\"components\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]},{\"name\":\"taskResponse\",\"type\":\"tuple\",\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numberSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"nonSignerStakesAndSignature\",\"type\":\"tuple\",\"internalType\":\"structIBLSSignatureChecker.NonSignerStakesAndSignature\",\"components\":[{\"name\":\"nonSignerQuorumBitmapIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerPubkeys\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApks\",\"type\":\"tuple[]\",\"internalType\":\"structBN254.G1Point[]\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"quorumApkIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"totalStakeIndices\",\"type\":\"uint32[]\",\"internalType\":\"uint32[]\"},{\"name\":\"nonSignerStakeIndices\",\"type\":\"uint32[][]\",\"internalType\":\"uint32[][]\"}]}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setAggregator\",\"inputs\":[{\"name\":\"newAggregator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setGenerator\",\"inputs\":[{\"name\":\"newGenerator\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setPauserRegistry\",\"inputs\":[{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"internalType\":\"contractIPauserRegistry\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"setStaleStakesForbidden\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"stakeRegistry\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIStakeRegistry\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"staleStakesForbidden\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskNumber\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"taskSuccessfullyChallenged\",\"inputs\":[{\"name\":\"\",\"type\":\"uint32\",\"internalType\":\"uint32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"trySignatureAndApkVerification\",\"inputs\":[{\"name\":\"msgHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"apk\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"apkG2\",\"type\":\"tuple\",\"internalType\":\"structBN254.G2Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"},{\"name\":\"Y\",\"type\":\"uint256[2]\",\"internalType\":\"uint256[2]\"}]},{\"name\":\"sigma\",\"type\":\"tuple\",\"internalType\":\"structBN254.G1Point\",\"components\":[{\"name\":\"X\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"Y\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"pairingSuccessful\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"siganatureIsValid\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"unpause\",\"inputs\":[{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AggregatorUpdated\",\"inputs\":[{\"name\":\"oldAggregator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newAggregator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"GeneratorUpdated\",\"inputs\":[{\"name\":\"oldGenerator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newGenerator\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NewTaskCreated\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"task\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIIncredibleSquaringTaskManager.Task\",\"components\":[{\"name\":\"numberToBeSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"taskCreatedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"quorumNumbers\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"quorumThresholdPercentage\",\"type\":\"uint32\",\"internalType\":\"uint32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"previousOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Paused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"PauserRegistrySet\",\"inputs\":[{\"name\":\"pauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"},{\"name\":\"newPauserRegistry\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"contractIPauserRegistry\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"StaleStakesForbiddenUpdate\",\"inputs\":[{\"name\":\"value\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskChallengedSuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskChallengedUnsuccessfully\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"},{\"name\":\"challenger\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskCompleted\",\"inputs\":[{\"name\":\"taskIndex\",\"type\":\"uint32\",\"indexed\":true,\"internalType\":\"uint32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TaskResponded\",\"inputs\":[{\"name\":\"taskResponse\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponse\",\"components\":[{\"name\":\"referenceTaskIndex\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"numberSquared\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"taskResponseMetadata\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structIIncredibleSquaringTaskManager.TaskResponseMetadata\",\"components\":[{\"name\":\"taskRespondedBlock\",\"type\":\"uint32\",\"internalType\":\"uint32\"},{\"name\":\"hashOfNonSigners\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Unpaused\",\"inputs\":[{\"name\":\"account\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newPausedStatus\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false}]", + Bin: "0x6101206040523480156200001257600080fd5b5060405162006350380380620063508339810160408190526200003591620001ea565b81806001600160a01b03166080816001600160a01b031681525050806001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200008f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000b5919062000231565b6001600160a01b031660a0816001600160a01b031681525050806001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200010d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000133919062000231565b6001600160a01b031660c0816001600160a01b03168152505060a0516001600160a01b031663df5cf7236040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200018d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001b3919062000231565b6001600160a01b031660e0525063ffffffff16610100525062000258565b6001600160a01b0381168114620001e757600080fd5b50565b60008060408385031215620001fe57600080fd5b82516200020b81620001d1565b602084015190925063ffffffff811681146200022657600080fd5b809150509250929050565b6000602082840312156200024457600080fd5b81516200025181620001d1565b9392505050565b60805160a05160c05160e05161010051616066620002ea600039600081816102a90152818161061b0152611bf20152600081816105e40152612e8401526000818161049d015281816124e101526130660152600081816104c40152818161323c01526133fe01526000818161051101528181610fb901528181612b6e01528181612ce70152612f2101526160666000f3fe608060405234801561001057600080fd5b50600436106102485760003560e01c8063683048351161013b5780638da5cb5b116100b8578063f5c9899d1161007c578063f5c9899d14610619578063f63c5bab1461063f578063f8c8765e14610647578063f9120af61461065a578063fabc1cbc1461066d57600080fd5b80638da5cb5b146105a0578063b98d0908146105b1578063cefdc1d4146105be578063df5cf723146105df578063f2fde38b1461060657600080fd5b8063715018a6116100ff578063715018a61461055457806372d18e8d1461055c5780637afa1eed1461056a578063886f11951461057d5780638b00ce7c1461059057600080fd5b806368304835146104bf5780636b532e9e146104e65780636b92787e146104f95780636d14a9871461050c5780636efb46361461053357600080fd5b8063416c7e5e116101c95780635ac86ab71161018d5780635ac86ab71461043a5780635baec9a01461045d5780635c155662146104705780635c975abb146104905780635df459461461049857600080fd5b8063416c7e5e146103cc5780634a7c7e4b146103df5780634d2b57fe146103f25780634f739f7414610412578063595c6a671461043257600080fd5b8063245a7bfc11610210578063245a7bfc146103135780632cb223d51461033e5780632d89f6fc1461036c57806331b36bd91461038c5780633563b0d1146103ac57600080fd5b806310d67a2f1461024d578063136439dd14610262578063171f1d5b146102755780631ad43189146102a45780631ce8a3e3146102e0575b600080fd5b61026061025b366004614a35565b610680565b005b610260610270366004614a52565b61073c565b610288610283366004614bd0565b61087b565b6040805192151583529015156020830152015b60405180910390f35b6102cb7f000000000000000000000000000000000000000000000000000000000000000081565b60405163ffffffff909116815260200161029b565b6103036102ee366004614c3e565b60cc6020526000908152604090205460ff1681565b604051901515815260200161029b565b60cd54610326906001600160a01b031681565b6040516001600160a01b03909116815260200161029b565b61035e61034c366004614c3e565b60cb6020526000908152604090205481565b60405190815260200161029b565b61035e61037a366004614c3e565b60ca6020526000908152604090205481565b61039f61039a366004614c7e565b610a05565b60405161029b9190614d6c565b6103bf6103ba366004614d86565b610b21565b60405161029b9190614ee1565b6102606103da366004614f02565b610fb7565b6102606103ed366004614a35565b6110ee565b610405610400366004614f85565b6110ff565b60405161029b9190614fd4565b610425610420366004615069565b611214565b60405161029b9190615162565b61026061193a565b61030361044836600461522c565b606654600160ff9092169190911b9081161490565b61026061046b3660046154e4565b611a01565b61048361047e366004615558565b611e80565b60405161029b91906155bb565b60665461035e565b6103267f000000000000000000000000000000000000000000000000000000000000000081565b6103267f000000000000000000000000000000000000000000000000000000000000000081565b6102606104f43660046155f3565b612048565b610260610507366004615679565b61261a565b6103267f000000000000000000000000000000000000000000000000000000000000000081565b6105466105413660046156d4565b6127bb565b60405161029b929190615794565b6102606136b3565b60c95463ffffffff166102cb565b60ce54610326906001600160a01b031681565b606554610326906001600160a01b031681565b60c9546102cb9063ffffffff1681565b6033546001600160a01b0316610326565b6097546103039060ff1681565b6105d16105cc3660046157dd565b6136c7565b60405161029b929190615814565b6103267f000000000000000000000000000000000000000000000000000000000000000081565b610260610614366004614a35565b613859565b7f00000000000000000000000000000000000000000000000000000000000000006102cb565b6102cb606481565b610260610655366004615835565b6138cf565b610260610668366004614a35565b613a02565b61026061067b366004614a52565b613a13565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106d3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f79190615891565b6001600160a01b0316336001600160a01b0316146107305760405162461bcd60e51b8152600401610727906158ae565b60405180910390fd5b61073981613b6f565b50565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015610784573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107a891906158f8565b6107c45760405162461bcd60e51b815260040161072790615915565b6066548181161461083d5760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e70617573653a20696e76616c696420617474656d70742060448201527f746f20756e70617573652066756e6374696f6e616c69747900000000000000006064820152608401610727565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d906020015b60405180910390a250565b60008060007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001878760000151886020015188600001516000600281106108c3576108c361595d565b60200201518951600160200201518a602001516000600281106108e8576108e861595d565b60200201518b602001516001600281106109045761090461595d565b602090810291909101518c518d8301516040516109619a99989796959401988952602089019790975260408801959095526060870193909352608086019190915260a085015260c084015260e08301526101008201526101200190565b6040516020818303038152906040528051906020012060001c6109849190615973565b90506109f761099d6109968884613c66565b8690613cfd565b6109a5613d91565b6109ed6109de856109d8604080518082018252600080825260209182015281518083019092526001825260029082015290565b90613c66565b6109e78c613e51565b90613cfd565b886201d4c0613ee1565b909890975095505050505050565b606081516001600160401b03811115610a2057610a20614a6b565b604051908082528060200260200182016040528015610a49578160200160208202803683370190505b50905060005b8251811015610b1a57836001600160a01b03166313542a4e848381518110610a7957610a7961595d565b60200260200101516040518263ffffffff1660e01b8152600401610aac91906001600160a01b0391909116815260200190565b602060405180830381865afa158015610ac9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aed9190615995565b828281518110610aff57610aff61595d565b6020908102919091010152610b13816159c4565b9050610a4f565b5092915050565b60606000846001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b63573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b879190615891565b90506000856001600160a01b0316639e9923c26040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bc9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bed9190615891565b90506000866001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c539190615891565b9050600086516001600160401b03811115610c7057610c70614a6b565b604051908082528060200260200182016040528015610ca357816020015b6060815260200190600190039081610c8e5790505b50905060005b8751811015610fab576000888281518110610cc657610cc661595d565b0160200151604051638902624560e01b815260f89190911c6004820181905263ffffffff8a16602483015291506000906001600160a01b03871690638902624590604401600060405180830381865afa158015610d27573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610d4f91908101906159df565b905080516001600160401b03811115610d6a57610d6a614a6b565b604051908082528060200260200182016040528015610db557816020015b6040805160608101825260008082526020808301829052928201528252600019909201910181610d885790505b50848481518110610dc857610dc861595d565b602002602001018190525060005b8151811015610f95576040518060600160405280876001600160a01b03166347b314e8858581518110610e0b57610e0b61595d565b60200260200101516040518263ffffffff1660e01b8152600401610e3191815260200190565b602060405180830381865afa158015610e4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e729190615891565b6001600160a01b03168152602001838381518110610e9257610e9261595d565b60200260200101518152602001896001600160a01b031663fa28c627858581518110610ec057610ec061595d565b60209081029190910101516040516001600160e01b031960e084901b168152600481019190915260ff8816602482015263ffffffff8f166044820152606401602060405180830381865afa158015610f1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f409190615a6f565b6001600160601b0316815250858581518110610f5e57610f5e61595d565b60200260200101518281518110610f7757610f7761595d565b60200260200101819052508080610f8d906159c4565b915050610dd6565b5050508080610fa3906159c4565b915050610ca9565b50979650505050505050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611015573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110399190615891565b6001600160a01b0316336001600160a01b0316146110e55760405162461bcd60e51b815260206004820152605c60248201527f424c535369676e6174757265436865636b65722e6f6e6c79436f6f7264696e6160448201527f746f724f776e65723a2063616c6c6572206973206e6f7420746865206f776e6560648201527f72206f6620746865207265676973747279436f6f7264696e61746f7200000000608482015260a401610727565b61073981614105565b6110f661414c565b610739816141a6565b606081516001600160401b0381111561111a5761111a614a6b565b604051908082528060200260200182016040528015611143578160200160208202803683370190505b50905060005b8251811015610b1a57836001600160a01b031663296bb0648483815181106111735761117361595d565b60200260200101516040518263ffffffff1660e01b815260040161119991815260200190565b602060405180830381865afa1580156111b6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111da9190615891565b8282815181106111ec576111ec61595d565b6001600160a01b039092166020928302919091019091015261120d816159c4565b9050611149565b61123f6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000876001600160a01b031663683048356040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112a39190615891565b90506112d06040518060800160405280606081526020016060815260200160608152602001606081525090565b6040516361c8a12f60e11b81526001600160a01b038a169063c391425e90611300908b9089908990600401615a98565b600060405180830381865afa15801561131d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113459190810190615ae2565b81526040516340e03a8160e11b81526001600160a01b038316906381c0750290611377908b908b908b90600401615b99565b600060405180830381865afa158015611394573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526113bc9190810190615ae2565b6040820152856001600160401b038111156113d9576113d9614a6b565b60405190808252806020026020018201604052801561140c57816020015b60608152602001906001900390816113f75790505b50606082015260005b60ff811687111561184b576000856001600160401b0381111561143a5761143a614a6b565b604051908082528060200260200182016040528015611463578160200160208202803683370190505b5083606001518360ff168151811061147d5761147d61595d565b602002602001018190525060005b8681101561174b5760008c6001600160a01b03166304ec63518a8a858181106114b6576114b661595d565b905060200201358e886000015186815181106114d4576114d461595d565b60200260200101516040518463ffffffff1660e01b81526004016115119392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa15801561152e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115529190615bc2565b90506001600160c01b0381166115f65760405162461bcd60e51b815260206004820152605c60248201527f4f70657261746f7253746174655265747269657665722e676574436865636b5360448201527f69676e617475726573496e64696365733a206f70657261746f72206d7573742060648201527f6265207265676973746572656420617420626c6f636b6e756d62657200000000608482015260a401610727565b8a8a8560ff1681811061160b5761160b61595d565b6001600160c01b03841692013560f81c9190911c60019081161415905061173857856001600160a01b031663dd9846b98a8a8581811061164d5761164d61595d565b905060200201358d8d8860ff168181106116695761166961595d565b6040516001600160e01b031960e087901b1681526004810194909452919091013560f81c60248301525063ffffffff8f166044820152606401602060405180830381865afa1580156116bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116e39190615beb565b85606001518560ff16815181106116fc576116fc61595d565b602002602001015184815181106117155761171561595d565b63ffffffff9092166020928302919091019091015282611734816159c4565b9350505b5080611743816159c4565b91505061148b565b506000816001600160401b0381111561176657611766614a6b565b60405190808252806020026020018201604052801561178f578160200160208202803683370190505b50905060005b828110156118105784606001518460ff16815181106117b6576117b661595d565b602002602001015181815181106117cf576117cf61595d565b60200260200101518282815181106117e9576117e961595d565b63ffffffff9092166020928302919091019091015280611808816159c4565b915050611795565b508084606001518460ff168151811061182b5761182b61595d565b60200260200101819052505050808061184390615c08565b915050611415565b506000896001600160a01b0316635df459466040518163ffffffff1660e01b8152600401602060405180830381865afa15801561188c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b09190615891565b60405163354952a360e21b81529091506001600160a01b0382169063d5254a8c906118e3908b908b908e90600401615c28565b600060405180830381865afa158015611900573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526119289190810190615ae2565b60208301525098975050505050505050565b60655460405163237dfb4760e11b81523360048201526001600160a01b03909116906346fbf68e90602401602060405180830381865afa158015611982573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a691906158f8565b6119c25760405162461bcd60e51b815260040161072790615915565b600019606681905560405190815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a2565b60cd546001600160a01b03163314611a5b5760405162461bcd60e51b815260206004820152601d60248201527f41676772656761746f72206d757374206265207468652063616c6c65720000006044820152606401610727565b6000611a6d6040850160208601614c3e565b9050366000611a7f6040870187615c52565b90925090506000611a966080880160608901614c3e565b905060ca6000611aa96020890189614c3e565b63ffffffff1663ffffffff1681526020019081526020016000205487604051602001611ad59190615c98565b6040516020818303038152906040528051906020012014611b5e5760405162461bcd60e51b815260206004820152603d60248201527f737570706c696564207461736b20646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610727565b600060cb81611b7060208a018a614c3e565b63ffffffff1663ffffffff1681526020019081526020016000205414611bed5760405162461bcd60e51b815260206004820152602c60248201527f41676772656761746f722068617320616c726561647920726573706f6e64656460448201526b20746f20746865207461736b60a01b6064820152608401610727565b611c177f000000000000000000000000000000000000000000000000000000000000000085615d39565b63ffffffff164363ffffffff161115611c885760405162461bcd60e51b815260206004820152602d60248201527f41676772656761746f722068617320726573706f6e64656420746f207468652060448201526c7461736b20746f6f206c61746560981b6064820152608401610727565b600086604051602001611c9b9190615d7f565b604051602081830303815290604052805190602001209050600080611cc38387878a8c6127bb565b9150915060005b85811015611dc2578460ff1683602001518281518110611cec57611cec61595d565b6020026020010151611cfe9190615d8d565b6001600160601b0316606484600001518381518110611d1f57611d1f61595d565b60200260200101516001600160601b0316611d3a9190615dbc565b1015611db0576040805162461bcd60e51b81526020600482015260248101919091527f5369676e61746f7269657320646f206e6f74206f776e206174206c656173742060448201527f7468726573686f6c642070657263656e74616765206f6620612071756f72756d6064820152608401610727565b80611dba816159c4565b915050611cca565b5060408051808201825263ffffffff43168152602080820184905291519091611def918c91849101615ddb565b6040516020818303038152906040528051906020012060cb60008c6000016020810190611e1c9190614c3e565b63ffffffff1663ffffffff168152602001908152602001600020819055507f349c1ee60e4e8972ee9dba642c1774543d5c4136879b7f4caaf04bf81a487a2a8a82604051611e6b929190615ddb565b60405180910390a15050505050505050505050565b60606000846001600160a01b031663c391425e84866040518363ffffffff1660e01b8152600401611eb2929190615e07565b600060405180830381865afa158015611ecf573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611ef79190810190615ae2565b9050600084516001600160401b03811115611f1457611f14614a6b565b604051908082528060200260200182016040528015611f3d578160200160208202803683370190505b50905060005b855181101561203e57866001600160a01b03166304ec6351878381518110611f6d57611f6d61595d565b602002602001015187868581518110611f8857611f8861595d565b60200260200101516040518463ffffffff1660e01b8152600401611fc59392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015611fe2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120069190615bc2565b6001600160c01b03168282815181106120215761202161595d565b602090810291909101015280612036816159c4565b915050611f43565b5095945050505050565b60006120576020850185614c3e565b63ffffffff8116600090815260cb60205260409020549091508535906120c95760405162461bcd60e51b815260206004820152602160248201527f5461736b206861736e2774206265656e20726573706f6e64656420746f2079656044820152601d60fa1b6064820152608401610727565b84846040516020016120dc929190615e26565b60408051601f19818403018152918152815160209283012063ffffffff8516600090815260cb9093529120541461217b5760405162461bcd60e51b815260206004820152603d60248201527f5461736b20726573706f6e736520646f6573206e6f74206d617463682074686560448201527f206f6e65207265636f7264656420696e2074686520636f6e74726163740000006064820152608401610727565b63ffffffff8216600090815260cc602052604090205460ff16156122135760405162461bcd60e51b815260206004820152604360248201527f54686520726573706f6e736520746f2074686973207461736b2068617320616c60448201527f7265616479206265656e206368616c6c656e676564207375636365737366756c606482015262363c9760e91b608482015260a401610727565b60646122226020860186614c3e565b61222c9190615d39565b63ffffffff164363ffffffff1611156122ad5760405162461bcd60e51b815260206004820152603760248201527f546865206368616c6c656e676520706572696f6420666f72207468697320746160448201527f736b2068617320616c726561647920657870697265642e0000000000000000006064820152608401610727565b60006122b98280615dbc565b905060208601358114600181141561230757604051339063ffffffff8616907ffd3e26beeb5967fc5a57a0446914eabc45b4aa474c67a51b4b5160cac60ddb0590600090a350505050612614565b600085516001600160401b0381111561232257612322614a6b565b60405190808252806020026020018201604052801561234b578160200160208202803683370190505b50905060005b86518110156123bd5761238e87828151811061236f5761236f61595d565b6020026020010151805160009081526020918201519091526040902090565b8282815181106123a0576123a061595d565b6020908102919091010152806123b5816159c4565b915050612351565b5060006123d060408b0160208c01614c3e565b826040516020016123e2929190615e5c565b6040516020818303038152906040528051906020012090508760200135811461248c5760405162461bcd60e51b815260206004820152605060248201527f546865207075626b657973206f66206e6f6e2d7369676e696e67206f7065726160448201527f746f727320737570706c69656420627920746865206368616c6c656e6765722060648201526f30b932903737ba1031b7b93932b1ba1760811b608482015260a401610727565b600087516001600160401b038111156124a7576124a7614a6b565b6040519080825280602002602001820160405280156124d0578160200160208202803683370190505b50905060005b88518110156125c3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e8bb9ae68583815181106125205761252061595d565b60200260200101516040518263ffffffff1660e01b815260040161254691815260200190565b602060405180830381865afa158015612563573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125879190615891565b8282815181106125995761259961595d565b6001600160a01b0390921660209283029190910190910152806125bb816159c4565b9150506124d6565b5063ffffffff8716600081815260cc6020526040808220805460ff19166001179055513392917fc20d1bb0f1623680306b83d4ff4bb99a2beb9d86d97832f3ca40fd13a29df1ec91a3505050505050505b50505050565b60ce546001600160a01b0316331461267e5760405162461bcd60e51b815260206004820152602160248201527f5461736b2067656e657261746f72206d757374206265207468652063616c6c656044820152603960f91b6064820152608401610727565b6126b5604051806080016040528060008152602001600063ffffffff16815260200160608152602001600063ffffffff1681525090565b84815263ffffffff438116602080840191909152908516606083015260408051601f85018390048302810183019091528381529084908490819084018382808284376000920191909152505050506040808301919091525161271b908290602001615ea4565b60408051601f19818403018152828252805160209182012060c9805463ffffffff908116600090815260ca90945293909220555416907f1695b8d06ec800b4615e745cfb5bd00c1f2875615d42925c3b5afa543bb24c489061277e908490615ea4565b60405180910390a260c95461279a9063ffffffff166001615d39565b60c9805463ffffffff191663ffffffff929092169190911790555050505050565b60408051808201909152606080825260208201526000846128325760405162461bcd60e51b8152602060048201526037602482015260008051602061601183398151915260448201527f7265733a20656d7074792071756f72756d20696e7075740000000000000000006064820152608401610727565b6040830151518514801561284a575060a08301515185145b801561285a575060c08301515185145b801561286a575060e08301515185145b6128d45760405162461bcd60e51b8152602060048201526041602482015260008051602061601183398151915260448201527f7265733a20696e7075742071756f72756d206c656e677468206d69736d6174636064820152600d60fb1b608482015260a401610727565b8251516020840151511461294c5760405162461bcd60e51b815260206004820152604460248201819052600080516020616011833981519152908201527f7265733a20696e707574206e6f6e7369676e6572206c656e677468206d69736d6064820152630c2e8c6d60e31b608482015260a401610727565b4363ffffffff168463ffffffff16106129bb5760405162461bcd60e51b815260206004820152603c602482015260008051602061601183398151915260448201527f7265733a20696e76616c6964207265666572656e636520626c6f636b000000006064820152608401610727565b6040805180820182526000808252602080830191909152825180840190935260608084529083015290866001600160401b038111156129fc576129fc614a6b565b604051908082528060200260200182016040528015612a25578160200160208202803683370190505b506020820152866001600160401b03811115612a4357612a43614a6b565b604051908082528060200260200182016040528015612a6c578160200160208202803683370190505b50815260408051808201909152606080825260208201528560200151516001600160401b03811115612aa057612aa0614a6b565b604051908082528060200260200182016040528015612ac9578160200160208202803683370190505b5081526020860151516001600160401b03811115612ae957612ae9614a6b565b604051908082528060200260200182016040528015612b12578160200160208202803683370190505b5081602001819052506000612be48a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505060408051639aa1653d60e01b815290516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169350639aa1653d925060048083019260209291908290030181865afa158015612bbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bdf9190615f2f565b6141f8565b905060005b876020015151811015612e6057612c0f8860200151828151811061236f5761236f61595d565b83602001518281518110612c2557612c2561595d565b60209081029190910101528015612ce5576020830151612c46600183615f4c565b81518110612c5657612c5661595d565b602002602001015160001c83602001518281518110612c7757612c7761595d565b602002602001015160001c11612ce5576040805162461bcd60e51b815260206004820152602481019190915260008051602061601183398151915260448201527f7265733a206e6f6e5369676e65725075626b657973206e6f7420736f727465646064820152608401610727565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166304ec635184602001518381518110612d2a57612d2a61595d565b60200260200101518b8b600001518581518110612d4957612d4961595d565b60200260200101516040518463ffffffff1660e01b8152600401612d869392919092835263ffffffff918216602084015216604082015260600190565b602060405180830381865afa158015612da3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dc79190615bc2565b6001600160c01b031683600001518281518110612de657612de661595d565b602002602001018181525050612e4c610996612e208486600001518581518110612e1257612e1261595d565b60200260200101511661428b565b8a602001518481518110612e3657612e3661595d565b60200260200101516142b690919063ffffffff16565b945080612e58816159c4565b915050612be9565b5050612e6b8361439a565b60975490935060ff16600081612e82576000612f04565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c448feb86040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ee0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f049190615995565b905060005b8a811015613582578215613064578963ffffffff16827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663249a0c428f8f86818110612f6057612f6061595d565b60405160e085901b6001600160e01b031916815292013560f81c600483015250602401602060405180830381865afa158015612fa0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fc49190615995565b612fce9190615f63565b116130645760405162461bcd60e51b8152602060048201526066602482015260008051602061601183398151915260448201527f7265733a205374616b6552656769737472792075706461746573206d7573742060648201527f62652077697468696e207769746864726177616c44656c6179426c6f636b732060848201526577696e646f7760d01b60a482015260c401610727565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166368bccaac8d8d848181106130a5576130a561595d565b9050013560f81c60f81b60f81c8c8c60a0015185815181106130c9576130c961595d565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa158015613125573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131499190615f7b565b6001600160401b03191661316c8a60400151838151811061236f5761236f61595d565b67ffffffffffffffff1916146132085760405162461bcd60e51b8152602060048201526061602482015260008051602061601183398151915260448201527f7265733a2071756f72756d41706b206861736820696e2073746f72616765206460648201527f6f6573206e6f74206d617463682070726f76696465642071756f72756d2061706084820152606b60f81b60a482015260c401610727565b613238896040015182815181106132215761322161595d565b602002602001015187613cfd90919063ffffffff16565b95507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c8294c568d8d8481811061327b5761327b61595d565b9050013560f81c60f81b60f81c8c8c60c00151858151811061329f5761329f61595d565b60209081029190910101516040516001600160e01b031960e086901b16815260ff909316600484015263ffffffff9182166024840152166044820152606401602060405180830381865afa1580156132fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061331f9190615a6f565b856020015182815181106133355761333561595d565b6001600160601b039092166020928302919091018201528501518051829081106133615761336161595d565b60200260200101518560000151828151811061337f5761337f61595d565b60200260200101906001600160601b031690816001600160601b0316815250506000805b8a602001515181101561356d576133f7866000015182815181106133c9576133c961595d565b60200260200101518f8f868181106133e3576133e361595d565b600192013560f81c9290921c811614919050565b1561355b577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f2be94ae8f8f8681811061343d5761343d61595d565b9050013560f81c60f81b60f81c8e896020015185815181106134615761346161595d565b60200260200101518f60e00151888151811061347f5761347f61595d565b602002602001015187815181106134985761349861595d565b60209081029190910101516040516001600160e01b031960e087901b16815260ff909416600485015263ffffffff92831660248501526044840191909152166064820152608401602060405180830381865afa1580156134fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135209190615a6f565b87518051859081106135345761353461595d565b602002602001018181516135489190615fa6565b6001600160601b03169052506001909101905b80613565816159c4565b9150506133a3565b5050808061357a906159c4565b915050612f09565b50505060008061359c8c868a606001518b6080015161087b565b915091508161360d5760405162461bcd60e51b8152602060048201526043602482015260008051602061601183398151915260448201527f7265733a2070616972696e6720707265636f6d70696c652063616c6c206661696064820152621b195960ea1b608482015260a401610727565b8061366e5760405162461bcd60e51b8152602060048201526039602482015260008051602061601183398151915260448201527f7265733a207369676e617475726520697320696e76616c6964000000000000006064820152608401610727565b50506000878260200151604051602001613689929190615e5c565b60408051808303601f190181529190528051602090910120929b929a509198505050505050505050565b6136bb61414c565b6136c56000614435565b565b60408051600180825281830190925260009160609183916020808301908036833701905050905084816000815181106137025761370261595d565b60209081029190910101526040516361c8a12f60e11b81526000906001600160a01b0388169063c391425e9061373e9088908690600401615e07565b600060405180830381865afa15801561375b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526137839190810190615ae2565b6000815181106137955761379561595d565b60209081029190910101516040516304ec635160e01b81526004810188905263ffffffff87811660248301529091166044820181905291506000906001600160a01b038916906304ec635190606401602060405180830381865afa158015613801573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138259190615bc2565b6001600160c01b03169050600061383b82614487565b9050816138498a838a610b21565b9550955050505050935093915050565b61386161414c565b6001600160a01b0381166138c65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610727565b61073981614435565b600054610100900460ff16158080156138ef5750600054600160ff909116105b806139095750303b158015613909575060005460ff166001145b61396c5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610727565b6000805460ff19166001179055801561398f576000805461ff0019166101001790555b61399a856000614553565b6139a384614435565b6139ac8361463d565b6139b5826141a6565b80156139fb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b613a0a61414c565b6107398161463d565b606560009054906101000a90046001600160a01b03166001600160a01b031663eab66d7a6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613a66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613a8a9190615891565b6001600160a01b0316336001600160a01b031614613aba5760405162461bcd60e51b8152600401610727906158ae565b606654198119606654191614613b385760405162461bcd60e51b815260206004820152603860248201527f5061757361626c652e756e70617573653a20696e76616c696420617474656d7060448201527f7420746f2070617573652066756e6374696f6e616c69747900000000000000006064820152608401610727565b606681905560405181815233907f3582d1828e26bf56bd801502bc021ac0bc8afb57c826e4986b45593c8fad389c90602001610870565b6001600160a01b038116613bfd5760405162461bcd60e51b815260206004820152604960248201527f5061757361626c652e5f73657450617573657252656769737472793a206e657760448201527f50617573657252656769737472792063616e6e6f7420626520746865207a65726064820152686f206164647265737360b81b608482015260a401610727565b606554604080516001600160a01b03928316815291831660208301527f6e9fcd539896fca60e8b0f01dd580233e48a6b0f7df013b89ba7f565869acdb6910160405180910390a1606580546001600160a01b0319166001600160a01b0392909216919091179055565b6040805180820190915260008082526020820152613c82614946565b835181526020808501519082015260408082018490526000908360608460076107d05a03fa9050808015613cb557613cb7565bfe5b5080613cf55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5b5d5b0b59985a5b1959609a1b6044820152606401610727565b505092915050565b6040805180820190915260008082526020820152613d19614964565b835181526020808501518183015283516040808401919091529084015160608301526000908360808460066107d05a03fa9050808015613cb5575080613cf55760405162461bcd60e51b815260206004820152600d60248201526c1958cb5859190b59985a5b1959609a1b6044820152606401610727565b613d99614982565b50604080516080810182527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c28183019081527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6060830152815281518083019092527f275dc4a288d1afb3cbb1ac09187524c7db36395df7be3b99e673b13a075a65ec82527f1d9befcd05a5323e6da4d435f3b617cdb3af83285c2df711ef39c01571827f9d60208381019190915281019190915290565b604080518082019091526000808252602082015260008080613e81600080516020615ff183398151915286615973565b90505b613e8d8161468f565b9093509150600080516020615ff1833981519152828309831415613ec7576040805180820190915290815260208101919091529392505050565b600080516020615ff1833981519152600182089050613e84565b604080518082018252868152602080820186905282518084019093528683528201849052600091829190613f136149a7565b60005b60028110156140d8576000613f2c826006615dbc565b9050848260028110613f4057613f4061595d565b60200201515183613f52836000615f63565b600c8110613f6257613f6261595d565b6020020152848260028110613f7957613f7961595d565b60200201516020015183826001613f909190615f63565b600c8110613fa057613fa061595d565b6020020152838260028110613fb757613fb761595d565b6020020151515183613fca836002615f63565b600c8110613fda57613fda61595d565b6020020152838260028110613ff157613ff161595d565b602002015151600160200201518361400a836003615f63565b600c811061401a5761401a61595d565b60200201528382600281106140315761403161595d565b60200201516020015160006002811061404c5761404c61595d565b60200201518361405d836004615f63565b600c811061406d5761406d61595d565b60200201528382600281106140845761408461595d565b60200201516020015160016002811061409f5761409f61595d565b6020020151836140b0836005615f63565b600c81106140c0576140c061595d565b602002015250806140d0816159c4565b915050613f16565b506140e16149c6565b60006020826101808560088cfa9151919c9115159b50909950505050505050505050565b6097805460ff19168215159081179091556040519081527f40e4ed880a29e0f6ddce307457fb75cddf4feef7d3ecb0301bfdf4976a0e2dfc9060200160405180910390a150565b6033546001600160a01b031633146136c55760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610727565b60ce80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b90600090a35050565b60008061420484614711565b9050808360ff166001901b116142825760405162461bcd60e51b815260206004820152603f60248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206269746d61702065786365656473206d61782076616c7565006064820152608401610727565b90505b92915050565b6000805b8215614285576142a0600184615f4c565b90921691806142ae81615fce565b91505061428f565b60408051808201909152600080825260208201526102008261ffff16106143125760405162461bcd60e51b815260206004820152601060248201526f7363616c61722d746f6f2d6c6172676560801b6044820152606401610727565b8161ffff1660011415614326575081614285565b6040805180820190915260008082526020820181905284906001905b8161ffff168661ffff161061438f57600161ffff871660ff83161c811614156143725761436f8484613cfd565b93505b61437c8384613cfd565b92506201fffe600192831b169101614342565b509195945050505050565b604080518082019091526000808252602082015281511580156143bf57506020820151155b156143dd575050604080518082019091526000808252602082015290565b604051806040016040528083600001518152602001600080516020615ff183398151915284602001516144109190615973565b61442890600080516020615ff1833981519152615f4c565b905292915050565b919050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60606000806144958461428b565b61ffff166001600160401b038111156144b0576144b0614a6b565b6040519080825280601f01601f1916602001820160405280156144da576020820181803683370190505b5090506000805b8251821080156144f2575061010081105b15614549576001811b935085841615614539578060f81b83838151811061451b5761451b61595d565b60200101906001600160f81b031916908160001a9053508160010191505b614542816159c4565b90506144e1565b5090949350505050565b6065546001600160a01b031615801561457457506001600160a01b03821615155b6145f65760405162461bcd60e51b815260206004820152604760248201527f5061757361626c652e5f696e697469616c697a655061757365723a205f696e6960448201527f7469616c697a6550617573657228292063616e206f6e6c792062652063616c6c6064820152666564206f6e636560c81b608482015260a401610727565b606681905560405181815233907fab40a374bc51de372200a8bc981af8c9ecdc08dfdaef0bb6e09f88f3c616ef3d9060200160405180910390a261463982613b6f565b5050565b60cd80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f290600090a35050565b60008080600080516020615ff18339815191526003600080516020615ff183398151915286600080516020615ff1833981519152888909090890506000614705827f0c19139cb84c680a6e14116da060561765e05aa45a1c72a34f082305b61f3f52600080516020615ff183398151915261489e565b91959194509092505050565b60006101008251111561479a5760405162461bcd60e51b8152602060048201526044602482018190527f4269746d61705574696c732e6f72646572656442797465734172726179546f42908201527f69746d61703a206f7264657265644279746573417272617920697320746f6f206064820152636c6f6e6760e01b608482015260a401610727565b81516147a857506000919050565b600080836000815181106147be576147be61595d565b0160200151600160f89190911c81901b92505b8451811015614895578481815181106147ec576147ec61595d565b0160200151600160f89190911c1b91508282116148815760405162461bcd60e51b815260206004820152604760248201527f4269746d61705574696c732e6f72646572656442797465734172726179546f4260448201527f69746d61703a206f72646572656442797465734172726179206973206e6f74206064820152661bdc99195c995960ca1b608482015260a401610727565b9181179161488e816159c4565b90506147d1565b50909392505050565b6000806148a96149c6565b6148b16149e4565b602080825281810181905260408201819052606082018890526080820187905260a082018690528260c08360056107d05a03fa9250828015613cb557508261493b5760405162461bcd60e51b815260206004820152601a60248201527f424e3235342e6578704d6f643a2063616c6c206661696c7572650000000000006044820152606401610727565b505195945050505050565b60405180606001604052806003906020820280368337509192915050565b60405180608001604052806004906020820280368337509192915050565b6040518060400160405280614995614a02565b81526020016149a2614a02565b905290565b604051806101800160405280600c906020820280368337509192915050565b60405180602001604052806001906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6001600160a01b038116811461073957600080fd5b600060208284031215614a4757600080fd5b813561428281614a20565b600060208284031215614a6457600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715614aa357614aa3614a6b565b60405290565b60405161010081016001600160401b0381118282101715614aa357614aa3614a6b565b604051601f8201601f191681016001600160401b0381118282101715614af457614af4614a6b565b604052919050565b600060408284031215614b0e57600080fd5b614b16614a81565b9050813581526020820135602082015292915050565b600082601f830112614b3d57600080fd5b604051604081018181106001600160401b0382111715614b5f57614b5f614a6b565b8060405250806040840185811115614b7657600080fd5b845b8181101561438f578035835260209283019201614b78565b600060808284031215614ba257600080fd5b614baa614a81565b9050614bb68383614b2c565b8152614bc58360408401614b2c565b602082015292915050565b6000806000806101208587031215614be757600080fd5b84359350614bf88660208701614afc565b9250614c078660608701614b90565b9150614c168660e08701614afc565b905092959194509250565b63ffffffff8116811461073957600080fd5b803561443081614c21565b600060208284031215614c5057600080fd5b813561428281614c21565b60006001600160401b03821115614c7457614c74614a6b565b5060051b60200190565b60008060408385031215614c9157600080fd5b8235614c9c81614a20565b91506020838101356001600160401b03811115614cb857600080fd5b8401601f81018613614cc957600080fd5b8035614cdc614cd782614c5b565b614acc565b81815260059190911b82018301908381019088831115614cfb57600080fd5b928401925b82841015614d22578335614d1381614a20565b82529284019290840190614d00565b80955050505050509250929050565b600081518084526020808501945080840160005b83811015614d6157815187529582019590820190600101614d45565b509495945050505050565b602081526000614d7f6020830184614d31565b9392505050565b600080600060608486031215614d9b57600080fd5b8335614da681614a20565b92506020848101356001600160401b0380821115614dc357600080fd5b818701915087601f830112614dd757600080fd5b813581811115614de957614de9614a6b565b614dfb601f8201601f19168501614acc565b91508082528884828501011115614e1157600080fd5b8084840185840137600084828401015250809450505050614e3460408501614c33565b90509250925092565b600081518084526020808501808196508360051b810191508286016000805b86811015614ed3578385038a52825180518087529087019087870190845b81811015614ebe57835180516001600160a01b031684528a8101518b8501526040908101516001600160601b03169084015292890192606090920191600101614e7a565b50509a87019a95505091850191600101614e5c565b509298975050505050505050565b602081526000614d7f6020830184614e3d565b801515811461073957600080fd5b600060208284031215614f1457600080fd5b813561428281614ef4565b600082601f830112614f3057600080fd5b81356020614f40614cd783614c5b565b82815260059290921b84018101918181019086841115614f5f57600080fd5b8286015b84811015614f7a5780358352918301918301614f63565b509695505050505050565b60008060408385031215614f9857600080fd5b8235614fa381614a20565b915060208301356001600160401b03811115614fbe57600080fd5b614fca85828601614f1f565b9150509250929050565b6020808252825182820181905260009190848201906040850190845b818110156150155783516001600160a01b031683529284019291840191600101614ff0565b50909695505050505050565b60008083601f84011261503357600080fd5b5081356001600160401b0381111561504a57600080fd5b60208301915083602082850101111561506257600080fd5b9250929050565b6000806000806000806080878903121561508257600080fd5b863561508d81614a20565b9550602087013561509d81614c21565b945060408701356001600160401b03808211156150b957600080fd5b6150c58a838b01615021565b909650945060608901359150808211156150de57600080fd5b818901915089601f8301126150f257600080fd5b81358181111561510157600080fd5b8a60208260051b850101111561511657600080fd5b6020830194508093505050509295509295509295565b600081518084526020808501945080840160005b83811015614d6157815163ffffffff1687529582019590820190600101615140565b60006020808352835160808285015261517e60a085018261512c565b905081850151601f198086840301604087015261519b838361512c565b925060408701519150808684030160608701526151b8838361512c565b60608801518782038301608089015280518083529194508501925084840190600581901b8501860160005b8281101561520f57848783030184526151fd82875161512c565b958801959388019391506001016151e3565b509998505050505050505050565b60ff8116811461073957600080fd5b60006020828403121561523e57600080fd5b81356142828161521d565b60006080828403121561525b57600080fd5b50919050565b60006040828403121561525b57600080fd5b600082601f83011261528457600080fd5b81356020615294614cd783614c5b565b82815260059290921b840181019181810190868411156152b357600080fd5b8286015b84811015614f7a5780356152ca81614c21565b83529183019183016152b7565b600082601f8301126152e857600080fd5b813560206152f8614cd783614c5b565b82815260069290921b8401810191818101908684111561531757600080fd5b8286015b84811015614f7a5761532d8882614afc565b83529183019160400161531b565b600082601f83011261534c57600080fd5b8135602061535c614cd783614c5b565b82815260059290921b8401810191818101908684111561537b57600080fd5b8286015b84811015614f7a5780356001600160401b0381111561539e5760008081fd5b6153ac8986838b0101615273565b84525091830191830161537f565b600061018082840312156153cd57600080fd5b6153d5614aa9565b905081356001600160401b03808211156153ee57600080fd5b6153fa85838601615273565b8352602084013591508082111561541057600080fd5b61541c858386016152d7565b6020840152604084013591508082111561543557600080fd5b615441858386016152d7565b60408401526154538560608601614b90565b60608401526154658560e08601614afc565b608084015261012084013591508082111561547f57600080fd5b61548b85838601615273565b60a08401526101408401359150808211156154a557600080fd5b6154b185838601615273565b60c08401526101608401359150808211156154cb57600080fd5b506154d88482850161533b565b60e08301525092915050565b6000806000608084860312156154f957600080fd5b83356001600160401b038082111561551057600080fd5b61551c87838801615249565b945061552b8760208801615261565b9350606086013591508082111561554157600080fd5b5061554e868287016153ba565b9150509250925092565b60008060006060848603121561556d57600080fd5b833561557881614a20565b925060208401356001600160401b0381111561559357600080fd5b61559f86828701614f1f565b92505060408401356155b081614c21565b809150509250925092565b6020808252825182820181905260009190848201906040850190845b81811015615015578351835292840192918401916001016155d7565b60008060008060c0858703121561560957600080fd5b84356001600160401b038082111561562057600080fd5b61562c88838901615249565b955061563b8860208901615261565b945061564a8860608901615261565b935060a087013591508082111561566057600080fd5b5061566d878288016152d7565b91505092959194509250565b6000806000806060858703121561568f57600080fd5b8435935060208501356156a181614c21565b925060408501356001600160401b038111156156bc57600080fd5b6156c887828801615021565b95989497509550505050565b6000806000806000608086880312156156ec57600080fd5b8535945060208601356001600160401b038082111561570a57600080fd5b61571689838a01615021565b90965094506040880135915061572b82614c21565b9092506060870135908082111561574157600080fd5b5061574e888289016153ba565b9150509295509295909350565b600081518084526020808501945080840160005b83811015614d615781516001600160601b03168752958201959082019060010161576f565b60408152600083516040808401526157af608084018261575b565b90506020850151603f198483030160608501526157cc828261575b565b925050508260208301529392505050565b6000806000606084860312156157f257600080fd5b83356157fd81614a20565b92506020840135915060408401356155b081614c21565b82815260406020820152600061582d6040830184614e3d565b949350505050565b6000806000806080858703121561584b57600080fd5b843561585681614a20565b9350602085013561586681614a20565b9250604085013561587681614a20565b9150606085013561588681614a20565b939692955090935050565b6000602082840312156158a357600080fd5b815161428281614a20565b6020808252602a908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526939903ab73830bab9b2b960b11b606082015260800190565b60006020828403121561590a57600080fd5b815161428281614ef4565b60208082526028908201527f6d73672e73656e646572206973206e6f74207065726d697373696f6e6564206160408201526739903830bab9b2b960c11b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008261599057634e487b7160e01b600052601260045260246000fd5b500690565b6000602082840312156159a757600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b60006000198214156159d8576159d86159ae565b5060010190565b600060208083850312156159f257600080fd5b82516001600160401b03811115615a0857600080fd5b8301601f81018513615a1957600080fd5b8051615a27614cd782614c5b565b81815260059190911b82018301908381019087831115615a4657600080fd5b928401925b82841015615a6457835182529284019290840190615a4b565b979650505050505050565b600060208284031215615a8157600080fd5b81516001600160601b038116811461428257600080fd5b63ffffffff84168152604060208201819052810182905260006001600160fb1b03831115615ac557600080fd5b8260051b8085606085013760009201606001918252509392505050565b60006020808385031215615af557600080fd5b82516001600160401b03811115615b0b57600080fd5b8301601f81018513615b1c57600080fd5b8051615b2a614cd782614c5b565b81815260059190911b82018301908381019087831115615b4957600080fd5b928401925b82841015615a64578351615b6181614c21565b82529284019290840190615b4e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff84168152604060208201526000615bb9604083018486615b70565b95945050505050565b600060208284031215615bd457600080fd5b81516001600160c01b038116811461428257600080fd5b600060208284031215615bfd57600080fd5b815161428281614c21565b600060ff821660ff811415615c1f57615c1f6159ae565b60010192915050565b604081526000615c3c604083018587615b70565b905063ffffffff83166020830152949350505050565b6000808335601e19843603018112615c6957600080fd5b8301803591506001600160401b03821115615c8357600080fd5b60200191503681900382131561506257600080fd5b602081528135602082015260006020830135615cb381614c21565b63ffffffff81166040840152506040830135601e19843603018112615cd757600080fd5b830180356001600160401b03811115615cef57600080fd5b803603851315615cfe57600080fd5b60806060850152615d1660a085018260208501615b70565b915050615d2560608501614c33565b63ffffffff81166080850152509392505050565b600063ffffffff808316818516808303821115615d5857615d586159ae565b01949350505050565b8035615d6c81614c21565b63ffffffff168252602090810135910152565b604081016142858284615d61565b60006001600160601b0380831681851681830481118215151615615db357615db36159ae565b02949350505050565b6000816000190483118215151615615dd657615dd66159ae565b500290565b60808101615de98285615d61565b63ffffffff8351166040830152602083015160608301529392505050565b63ffffffff8316815260406020820152600061582d6040830184614d31565b60808101615e348285615d61565b8235615e3f81614c21565b63ffffffff16604083015260209290920135606090910152919050565b63ffffffff60e01b8360e01b1681526000600482018351602080860160005b83811015615e9757815185529382019390820190600101615e7b565b5092979650505050505050565b6000602080835283518184015263ffffffff8185015116604084015260408401516080606085015280518060a086015260005b81811015615ef35782810184015186820160c001528301615ed7565b81811115615f0557600060c083880101525b50606086015163ffffffff811660808701529250601f01601f19169390930160c001949350505050565b600060208284031215615f4157600080fd5b81516142828161521d565b600082821015615f5e57615f5e6159ae565b500390565b60008219821115615f7657615f766159ae565b500190565b600060208284031215615f8d57600080fd5b815167ffffffffffffffff198116811461428257600080fd5b60006001600160601b0383811690831681811015615fc657615fc66159ae565b039392505050565b600061ffff80831681811415615fe657615fe66159ae565b600101939250505056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47424c535369676e6174757265436865636b65722e636865636b5369676e617475a26469706673582212208871a292d63965d881d9db85cba241bdf16ec2ff3aab74ef446e95673306a0b464736f6c634300080c0033", } // ContractIncredibleSquaringTaskManagerABI is the input ABI used to generate the binding from. @@ -547,6 +547,68 @@ func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskMana return _ContractIncredibleSquaringTaskManager.Contract.Generator(&_ContractIncredibleSquaringTaskManager.CallOpts) } +// GetBatchOperatorFromId is a free data retrieval call binding the contract method 0x4d2b57fe. +// +// Solidity: function getBatchOperatorFromId(address registryCoordinator, bytes32[] operatorIds) view returns(address[] operators) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCaller) GetBatchOperatorFromId(opts *bind.CallOpts, registryCoordinator common.Address, operatorIds [][32]byte) ([]common.Address, error) { + var out []interface{} + err := _ContractIncredibleSquaringTaskManager.contract.Call(opts, &out, "getBatchOperatorFromId", registryCoordinator, operatorIds) + + if err != nil { + return *new([]common.Address), err + } + + out0 := *abi.ConvertType(out[0], new([]common.Address)).(*[]common.Address) + + return out0, err + +} + +// GetBatchOperatorFromId is a free data retrieval call binding the contract method 0x4d2b57fe. +// +// Solidity: function getBatchOperatorFromId(address registryCoordinator, bytes32[] operatorIds) view returns(address[] operators) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerSession) GetBatchOperatorFromId(registryCoordinator common.Address, operatorIds [][32]byte) ([]common.Address, error) { + return _ContractIncredibleSquaringTaskManager.Contract.GetBatchOperatorFromId(&_ContractIncredibleSquaringTaskManager.CallOpts, registryCoordinator, operatorIds) +} + +// GetBatchOperatorFromId is a free data retrieval call binding the contract method 0x4d2b57fe. +// +// Solidity: function getBatchOperatorFromId(address registryCoordinator, bytes32[] operatorIds) view returns(address[] operators) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCallerSession) GetBatchOperatorFromId(registryCoordinator common.Address, operatorIds [][32]byte) ([]common.Address, error) { + return _ContractIncredibleSquaringTaskManager.Contract.GetBatchOperatorFromId(&_ContractIncredibleSquaringTaskManager.CallOpts, registryCoordinator, operatorIds) +} + +// GetBatchOperatorId is a free data retrieval call binding the contract method 0x31b36bd9. +// +// Solidity: function getBatchOperatorId(address registryCoordinator, address[] operators) view returns(bytes32[] operatorIds) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCaller) GetBatchOperatorId(opts *bind.CallOpts, registryCoordinator common.Address, operators []common.Address) ([][32]byte, error) { + var out []interface{} + err := _ContractIncredibleSquaringTaskManager.contract.Call(opts, &out, "getBatchOperatorId", registryCoordinator, operators) + + if err != nil { + return *new([][32]byte), err + } + + out0 := *abi.ConvertType(out[0], new([][32]byte)).(*[][32]byte) + + return out0, err + +} + +// GetBatchOperatorId is a free data retrieval call binding the contract method 0x31b36bd9. +// +// Solidity: function getBatchOperatorId(address registryCoordinator, address[] operators) view returns(bytes32[] operatorIds) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerSession) GetBatchOperatorId(registryCoordinator common.Address, operators []common.Address) ([][32]byte, error) { + return _ContractIncredibleSquaringTaskManager.Contract.GetBatchOperatorId(&_ContractIncredibleSquaringTaskManager.CallOpts, registryCoordinator, operators) +} + +// GetBatchOperatorId is a free data retrieval call binding the contract method 0x31b36bd9. +// +// Solidity: function getBatchOperatorId(address registryCoordinator, address[] operators) view returns(bytes32[] operatorIds) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCallerSession) GetBatchOperatorId(registryCoordinator common.Address, operators []common.Address) ([][32]byte, error) { + return _ContractIncredibleSquaringTaskManager.Contract.GetBatchOperatorId(&_ContractIncredibleSquaringTaskManager.CallOpts, registryCoordinator, operators) +} + // GetCheckSignaturesIndices is a free data retrieval call binding the contract method 0x4f739f74. // // Solidity: function getCheckSignaturesIndices(address registryCoordinator, uint32 referenceBlockNumber, bytes quorumNumbers, bytes32[] nonSignerOperatorIds) view returns((uint32[],uint32[],uint32[],uint32[][])) @@ -982,12 +1044,12 @@ func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskMana return _ContractIncredibleSquaringTaskManager.Contract.TaskNumber(&_ContractIncredibleSquaringTaskManager.CallOpts) } -// TaskSuccesfullyChallenged is a free data retrieval call binding the contract method 0x5decc3f5. +// TaskSuccessfullyChallenged is a free data retrieval call binding the contract method 0x1ce8a3e3. // -// Solidity: function taskSuccesfullyChallenged(uint32 ) view returns(bool) -func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCaller) TaskSuccesfullyChallenged(opts *bind.CallOpts, arg0 uint32) (bool, error) { +// Solidity: function taskSuccessfullyChallenged(uint32 ) view returns(bool) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCaller) TaskSuccessfullyChallenged(opts *bind.CallOpts, arg0 uint32) (bool, error) { var out []interface{} - err := _ContractIncredibleSquaringTaskManager.contract.Call(opts, &out, "taskSuccesfullyChallenged", arg0) + err := _ContractIncredibleSquaringTaskManager.contract.Call(opts, &out, "taskSuccessfullyChallenged", arg0) if err != nil { return *new(bool), err @@ -999,18 +1061,18 @@ func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskMana } -// TaskSuccesfullyChallenged is a free data retrieval call binding the contract method 0x5decc3f5. +// TaskSuccessfullyChallenged is a free data retrieval call binding the contract method 0x1ce8a3e3. // -// Solidity: function taskSuccesfullyChallenged(uint32 ) view returns(bool) -func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerSession) TaskSuccesfullyChallenged(arg0 uint32) (bool, error) { - return _ContractIncredibleSquaringTaskManager.Contract.TaskSuccesfullyChallenged(&_ContractIncredibleSquaringTaskManager.CallOpts, arg0) +// Solidity: function taskSuccessfullyChallenged(uint32 ) view returns(bool) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerSession) TaskSuccessfullyChallenged(arg0 uint32) (bool, error) { + return _ContractIncredibleSquaringTaskManager.Contract.TaskSuccessfullyChallenged(&_ContractIncredibleSquaringTaskManager.CallOpts, arg0) } -// TaskSuccesfullyChallenged is a free data retrieval call binding the contract method 0x5decc3f5. +// TaskSuccessfullyChallenged is a free data retrieval call binding the contract method 0x1ce8a3e3. // -// Solidity: function taskSuccesfullyChallenged(uint32 ) view returns(bool) -func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCallerSession) TaskSuccesfullyChallenged(arg0 uint32) (bool, error) { - return _ContractIncredibleSquaringTaskManager.Contract.TaskSuccesfullyChallenged(&_ContractIncredibleSquaringTaskManager.CallOpts, arg0) +// Solidity: function taskSuccessfullyChallenged(uint32 ) view returns(bool) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerCallerSession) TaskSuccessfullyChallenged(arg0 uint32) (bool, error) { + return _ContractIncredibleSquaringTaskManager.Contract.TaskSuccessfullyChallenged(&_ContractIncredibleSquaringTaskManager.CallOpts, arg0) } // TrySignatureAndApkVerification is a free data retrieval call binding the contract method 0x171f1d5b. @@ -1205,6 +1267,48 @@ func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskMana return _ContractIncredibleSquaringTaskManager.Contract.RespondToTask(&_ContractIncredibleSquaringTaskManager.TransactOpts, task, taskResponse, nonSignerStakesAndSignature) } +// SetAggregator is a paid mutator transaction binding the contract method 0xf9120af6. +// +// Solidity: function setAggregator(address newAggregator) returns() +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerTransactor) SetAggregator(opts *bind.TransactOpts, newAggregator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringTaskManager.contract.Transact(opts, "setAggregator", newAggregator) +} + +// SetAggregator is a paid mutator transaction binding the contract method 0xf9120af6. +// +// Solidity: function setAggregator(address newAggregator) returns() +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerSession) SetAggregator(newAggregator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringTaskManager.Contract.SetAggregator(&_ContractIncredibleSquaringTaskManager.TransactOpts, newAggregator) +} + +// SetAggregator is a paid mutator transaction binding the contract method 0xf9120af6. +// +// Solidity: function setAggregator(address newAggregator) returns() +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerTransactorSession) SetAggregator(newAggregator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringTaskManager.Contract.SetAggregator(&_ContractIncredibleSquaringTaskManager.TransactOpts, newAggregator) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x4a7c7e4b. +// +// Solidity: function setGenerator(address newGenerator) returns() +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerTransactor) SetGenerator(opts *bind.TransactOpts, newGenerator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringTaskManager.contract.Transact(opts, "setGenerator", newGenerator) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x4a7c7e4b. +// +// Solidity: function setGenerator(address newGenerator) returns() +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerSession) SetGenerator(newGenerator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringTaskManager.Contract.SetGenerator(&_ContractIncredibleSquaringTaskManager.TransactOpts, newGenerator) +} + +// SetGenerator is a paid mutator transaction binding the contract method 0x4a7c7e4b. +// +// Solidity: function setGenerator(address newGenerator) returns() +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerTransactorSession) SetGenerator(newGenerator common.Address) (*types.Transaction, error) { + return _ContractIncredibleSquaringTaskManager.Contract.SetGenerator(&_ContractIncredibleSquaringTaskManager.TransactOpts, newGenerator) +} + // SetPauserRegistry is a paid mutator transaction binding the contract method 0x10d67a2f. // // Solidity: function setPauserRegistry(address newPauserRegistry) returns() @@ -1289,6 +1393,312 @@ func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskMana return _ContractIncredibleSquaringTaskManager.Contract.Unpause(&_ContractIncredibleSquaringTaskManager.TransactOpts, newPausedStatus) } +// ContractIncredibleSquaringTaskManagerAggregatorUpdatedIterator is returned from FilterAggregatorUpdated and is used to iterate over the raw logs and unpacked data for AggregatorUpdated events raised by the ContractIncredibleSquaringTaskManager contract. +type ContractIncredibleSquaringTaskManagerAggregatorUpdatedIterator struct { + Event *ContractIncredibleSquaringTaskManagerAggregatorUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractIncredibleSquaringTaskManagerAggregatorUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractIncredibleSquaringTaskManagerAggregatorUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractIncredibleSquaringTaskManagerAggregatorUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractIncredibleSquaringTaskManagerAggregatorUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIncredibleSquaringTaskManagerAggregatorUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIncredibleSquaringTaskManagerAggregatorUpdated represents a AggregatorUpdated event raised by the ContractIncredibleSquaringTaskManager contract. +type ContractIncredibleSquaringTaskManagerAggregatorUpdated struct { + OldAggregator common.Address + NewAggregator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterAggregatorUpdated is a free log retrieval operation binding the contract event 0x89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2. +// +// Solidity: event AggregatorUpdated(address indexed oldAggregator, address indexed newAggregator) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerFilterer) FilterAggregatorUpdated(opts *bind.FilterOpts, oldAggregator []common.Address, newAggregator []common.Address) (*ContractIncredibleSquaringTaskManagerAggregatorUpdatedIterator, error) { + + var oldAggregatorRule []interface{} + for _, oldAggregatorItem := range oldAggregator { + oldAggregatorRule = append(oldAggregatorRule, oldAggregatorItem) + } + var newAggregatorRule []interface{} + for _, newAggregatorItem := range newAggregator { + newAggregatorRule = append(newAggregatorRule, newAggregatorItem) + } + + logs, sub, err := _ContractIncredibleSquaringTaskManager.contract.FilterLogs(opts, "AggregatorUpdated", oldAggregatorRule, newAggregatorRule) + if err != nil { + return nil, err + } + return &ContractIncredibleSquaringTaskManagerAggregatorUpdatedIterator{contract: _ContractIncredibleSquaringTaskManager.contract, event: "AggregatorUpdated", logs: logs, sub: sub}, nil +} + +// WatchAggregatorUpdated is a free log subscription operation binding the contract event 0x89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2. +// +// Solidity: event AggregatorUpdated(address indexed oldAggregator, address indexed newAggregator) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerFilterer) WatchAggregatorUpdated(opts *bind.WatchOpts, sink chan<- *ContractIncredibleSquaringTaskManagerAggregatorUpdated, oldAggregator []common.Address, newAggregator []common.Address) (event.Subscription, error) { + + var oldAggregatorRule []interface{} + for _, oldAggregatorItem := range oldAggregator { + oldAggregatorRule = append(oldAggregatorRule, oldAggregatorItem) + } + var newAggregatorRule []interface{} + for _, newAggregatorItem := range newAggregator { + newAggregatorRule = append(newAggregatorRule, newAggregatorItem) + } + + logs, sub, err := _ContractIncredibleSquaringTaskManager.contract.WatchLogs(opts, "AggregatorUpdated", oldAggregatorRule, newAggregatorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractIncredibleSquaringTaskManagerAggregatorUpdated) + if err := _ContractIncredibleSquaringTaskManager.contract.UnpackLog(event, "AggregatorUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseAggregatorUpdated is a log parse operation binding the contract event 0x89baabef7dfd0683c0ac16fd2a8431c51b49fbe654c3f7b5ef19763e2ccd88f2. +// +// Solidity: event AggregatorUpdated(address indexed oldAggregator, address indexed newAggregator) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerFilterer) ParseAggregatorUpdated(log types.Log) (*ContractIncredibleSquaringTaskManagerAggregatorUpdated, error) { + event := new(ContractIncredibleSquaringTaskManagerAggregatorUpdated) + if err := _ContractIncredibleSquaringTaskManager.contract.UnpackLog(event, "AggregatorUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ContractIncredibleSquaringTaskManagerGeneratorUpdatedIterator is returned from FilterGeneratorUpdated and is used to iterate over the raw logs and unpacked data for GeneratorUpdated events raised by the ContractIncredibleSquaringTaskManager contract. +type ContractIncredibleSquaringTaskManagerGeneratorUpdatedIterator struct { + Event *ContractIncredibleSquaringTaskManagerGeneratorUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ContractIncredibleSquaringTaskManagerGeneratorUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ContractIncredibleSquaringTaskManagerGeneratorUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ContractIncredibleSquaringTaskManagerGeneratorUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ContractIncredibleSquaringTaskManagerGeneratorUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ContractIncredibleSquaringTaskManagerGeneratorUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ContractIncredibleSquaringTaskManagerGeneratorUpdated represents a GeneratorUpdated event raised by the ContractIncredibleSquaringTaskManager contract. +type ContractIncredibleSquaringTaskManagerGeneratorUpdated struct { + OldGenerator common.Address + NewGenerator common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterGeneratorUpdated is a free log retrieval operation binding the contract event 0x0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b. +// +// Solidity: event GeneratorUpdated(address indexed oldGenerator, address indexed newGenerator) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerFilterer) FilterGeneratorUpdated(opts *bind.FilterOpts, oldGenerator []common.Address, newGenerator []common.Address) (*ContractIncredibleSquaringTaskManagerGeneratorUpdatedIterator, error) { + + var oldGeneratorRule []interface{} + for _, oldGeneratorItem := range oldGenerator { + oldGeneratorRule = append(oldGeneratorRule, oldGeneratorItem) + } + var newGeneratorRule []interface{} + for _, newGeneratorItem := range newGenerator { + newGeneratorRule = append(newGeneratorRule, newGeneratorItem) + } + + logs, sub, err := _ContractIncredibleSquaringTaskManager.contract.FilterLogs(opts, "GeneratorUpdated", oldGeneratorRule, newGeneratorRule) + if err != nil { + return nil, err + } + return &ContractIncredibleSquaringTaskManagerGeneratorUpdatedIterator{contract: _ContractIncredibleSquaringTaskManager.contract, event: "GeneratorUpdated", logs: logs, sub: sub}, nil +} + +// WatchGeneratorUpdated is a free log subscription operation binding the contract event 0x0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b. +// +// Solidity: event GeneratorUpdated(address indexed oldGenerator, address indexed newGenerator) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerFilterer) WatchGeneratorUpdated(opts *bind.WatchOpts, sink chan<- *ContractIncredibleSquaringTaskManagerGeneratorUpdated, oldGenerator []common.Address, newGenerator []common.Address) (event.Subscription, error) { + + var oldGeneratorRule []interface{} + for _, oldGeneratorItem := range oldGenerator { + oldGeneratorRule = append(oldGeneratorRule, oldGeneratorItem) + } + var newGeneratorRule []interface{} + for _, newGeneratorItem := range newGenerator { + newGeneratorRule = append(newGeneratorRule, newGeneratorItem) + } + + logs, sub, err := _ContractIncredibleSquaringTaskManager.contract.WatchLogs(opts, "GeneratorUpdated", oldGeneratorRule, newGeneratorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ContractIncredibleSquaringTaskManagerGeneratorUpdated) + if err := _ContractIncredibleSquaringTaskManager.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseGeneratorUpdated is a log parse operation binding the contract event 0x0ddfab8a635d71f15d72e2d2dff55d32119d13270d2ea4c3dc0043b66c2c476b. +// +// Solidity: event GeneratorUpdated(address indexed oldGenerator, address indexed newGenerator) +func (_ContractIncredibleSquaringTaskManager *ContractIncredibleSquaringTaskManagerFilterer) ParseGeneratorUpdated(log types.Log) (*ContractIncredibleSquaringTaskManagerGeneratorUpdated, error) { + event := new(ContractIncredibleSquaringTaskManagerGeneratorUpdated) + if err := _ContractIncredibleSquaringTaskManager.contract.UnpackLog(event, "GeneratorUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ContractIncredibleSquaringTaskManagerInitializedIterator is returned from FilterInitialized and is used to iterate over the raw logs and unpacked data for Initialized events raised by the ContractIncredibleSquaringTaskManager contract. type ContractIncredibleSquaringTaskManagerInitializedIterator struct { Event *ContractIncredibleSquaringTaskManagerInitialized // Event containing the contract specifics and raw log diff --git a/contracts/script/output/31337/eigenlayer_deployment_output.json b/contracts/script/output/31337/eigenlayer_deployment_output.json index eaaaa2a0..d05242e9 100644 --- a/contracts/script/output/31337/eigenlayer_deployment_output.json +++ b/contracts/script/output/31337/eigenlayer_deployment_output.json @@ -1,28 +1,28 @@ { "addresses": { - "avsDirectory": "0x5FC8d32690cc91D4c39d9d3abcBD16989F875707", - "avsDirectoryImplementation": "0x0DCd1Bf9A1b36cE34237eEaFef220932846BCD82", - "baseStrategyImplementation": "0x322813Fd9A801c5507c9de605d63CEA4f2CE6c44", - "delayedWithdrawalRouter": "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6", - "delayedWithdrawalRouterImplementation": "0x959922bE3CAee4b8Cd9a407cc3ac1C251C2007B1", - "delegation": "0xCf7Ed3AccA5a467e9e704C703E8D87F634fB0Fc9", - "delegationImplementation": "0xB7f8BC63BbcaD18155201308C8f3540b07f84F5e", - "eigenLayerPauserReg": "0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512", - "eigenLayerProxyAdmin": "0x5FbDB2315678afecb367f032d93F642f64180aa3", - "eigenPodBeacon": "0x610178dA211FEF7D417bC0e6FeD39F05609AD788", - "eigenPodImplementation": "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318", - "eigenPodManager": "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853", - "eigenPodManagerImplementation": "0x0B306BF915C4d645ff596e518fAf3F9669b97016", - "emptyContract": "0x9fE46736679d2D9a65F0992F2272dE9f3c7fa6e0", - "slasher": "0x0165878A594ca255338adfa4d48449f69242Eb8F", - "slasherImplementation": "0x9A676e781A523b5d0C0e43731313A708CB607508", + "avsDirectory": "0x8F4ec854Dd12F1fe79500a1f53D0cbB30f9b6134", + "avsDirectoryImplementation": "0xaC9fCBA56E42d5960f813B9D0387F3D3bC003338", + "baseStrategyImplementation": "0x3C15538ED063e688c8DF3d571Cb7a0062d2fB18D", + "delegation": "0x5133BBdfCCa3Eb4F739D599ee4eC45cBCD0E16c5", + "delegationImplementation": "0x63fea6E447F120B8Faf85B53cdaD8348e645D80E", + "eigenLayerPauserReg": "0x821f3361D454cc98b7555221A06Be563a7E2E0A6", + "eigenLayerProxyAdmin": "0x02df3a3F960393F5B349E40A599FEda91a7cc1A7", + "eigenPodBeacon": "0x9BcC604D4381C5b0Ad12Ff3Bf32bEdE063416BC7", + "eigenPodImplementation": "0xaC47e91215fb80462139756f43438402998E4A3a", + "eigenPodManager": "0xeF31027350Be2c7439C1b0BE022d49421488b72C", + "eigenPodManagerImplementation": "0x54B8d8E2455946f2A5B8982283f2359812e815ce", + "emptyContract": "0x1780bCf4103D3F501463AD3414c7f4b654bb7aFd", + "rewardsCoordinator": "0x12Bcb546bC60fF39F1Adfc7cE4605d5Bd6a6A876", + "rewardsCoordinatorImplementation": "0xf090f16dEc8b6D24082Edd25B1C8D26f2bC86128", + "slasher": "0xC66AB83418C20A65C3f8e83B3d11c8C3a6097b6F", + "slasherImplementation": "0x38A70c040CA5F5439ad52d0e821063b0EC0B52b6", "strategies": "", - "strategyManager": "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9", - "strategyManagerImplementation": "0xA51c1fc2f0D1a1b8494Ed1FE312d7C3a78Ed91C0" + "strategyManager": "0x71089Ba41e478702e1904692385Be3972B2cBf9e", + "strategyManagerImplementation": "0xdFdE6B33f13de2CA1A75A6F7169f50541B14f75b" }, "chainInfo": { "chainId": 31337, - "deploymentBlock": 0 + "deploymentBlock": 438 }, "parameters": { "executorMultisig": "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", diff --git a/tests/anvil/start-anvil-chain-with-el-and-avs-deployed.sh b/tests/anvil/start-anvil-chain-with-el-and-avs-deployed.sh index 85033db4..4e0b5383 100755 --- a/tests/anvil/start-anvil-chain-with-el-and-avs-deployed.sh +++ b/tests/anvil/start-anvil-chain-with-el-and-avs-deployed.sh @@ -13,22 +13,30 @@ set -a source ./utils.sh set +a -cleanup() { - echo "Executing cleanup function..." - set +e - docker rm -f anvil - exit_status=$? - if [ $exit_status -ne 0 ]; then - echo "Script exited due to set -e on line $1 with command '$2'. Exit status: $exit_status" - fi + +run_deployment() { + forge script script/deploy/devnet/M2_Deploy_From_Scratch.s.sol --rpc-url http://localhost:8545 --private-key 0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 --broadcast --sig "run(string memory configFile)" -- M2_deploy_from_scratch.anvil.config.json + echo "deployment done" + mv script/output/devnet/M2_from_scratch_deployment_data.json ../../../../script/output/31337/eigenlayer_deployment_output.json + mv script/output/devnet/M2_from_scratch_deployment_data.json.bak script/output/devnet/M2_from_scratch_deployment_data.json + echo "deployment output moved" +} + +start_anvil() { + anvil + sleep 2 } -trap 'cleanup $LINENO "$BASH_COMMAND"' EXIT -# start an anvil instance in the background that has eigenlayer contracts deployed -# we start anvil in the background so that we can run the below script -# anvil --load-state avs-and-eigenlayer-deployed-anvil-state.json & -# FIXME: bug in latest foundry version, so we use this pinned version instead of latest -start_anvil_docker $parent_path/avs-and-eigenlayer-deployed-anvil-state.json "" + + +cd ../../contracts/lib/eigenlayer-middleware/lib/eigenlayer-contracts +pwd +# deployment overwrites this file, so we save it as backup, because we want that output in our local files, and not in the eigenlayer-contracts submodule files +mv script/output/devnet/M2_from_scratch_deployment_data.json script/output/devnet/M2_from_scratch_deployment_data.json.bak + + +start_anvil & +run_deployment & cd ../../contracts # we need to restart the anvil chain at the correct block, otherwise the indexRegistry has a quorumUpdate at the block number @@ -38,5 +46,3 @@ cd ../../contracts cast rpc anvil_mine 100 --rpc-url $RPC_URL echo "advancing chain... current block-number:" $(cast block-number) -# Bring Anvil back to the foreground -docker attach anvil