github.com/codingfuture/orig-energi3@v0.8.4/energi/abi/BlacklistRegistryV1.go (about)

     1  // Code generated - DO NOT EDIT.
     2  // This file is a generated binding and any manual changes will be lost.
     3  
     4  package abi
     5  
     6  import (
     7  	"math/big"
     8  	"strings"
     9  
    10  	ethereum "github.com/ethereum/go-ethereum"
    11  	"github.com/ethereum/go-ethereum/accounts/abi"
    12  	"github.com/ethereum/go-ethereum/accounts/abi/bind"
    13  	"github.com/ethereum/go-ethereum/common"
    14  	"github.com/ethereum/go-ethereum/core/types"
    15  	"github.com/ethereum/go-ethereum/event"
    16  )
    17  
    18  // Reference imports to suppress errors if they are not otherwise used.
    19  var (
    20  	_ = big.NewInt
    21  	_ = strings.NewReader
    22  	_ = ethereum.NotFound
    23  	_ = abi.U256
    24  	_ = bind.Bind
    25  	_ = common.Big1
    26  	_ = types.BloomLookup
    27  	_ = event.NewSubscription
    28  )
    29  
    30  // BlacklistRegistryV1ABI is the input ABI used to generate the binding from.
    31  const BlacklistRegistryV1ABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_proxy\",\"type\":\"address\"},{\"internalType\":\"contractIGovernedProxy\",\"name\":\"_mnregistry_proxy\",\"type\":\"address\"},{\"internalType\":\"contractGen2Migration\",\"name\":\"_migration\",\"type\":\"address\"},{\"internalType\":\"contractITreasury\",\"name\":\"_compensation_fund\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ebi_signer\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contractIBlacklistProposal\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"BlacklistProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contractIBlacklistProposal\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"DrainProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contractIBlacklistProposal\",\"name\":\"proposal\",\"type\":\"address\"}],\"name\":\"WhitelistProposal\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"EBI_signer\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"collect\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"compensation_fund\",\"outputs\":[{\"internalType\":\"contractITreasury\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractIGovernedContract\",\"name\":\"_newImpl\",\"type\":\"address\"}],\"name\":\"destroy\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"item_id\",\"type\":\"uint256\"},{\"internalType\":\"bytes20\",\"name\":\"owner\",\"type\":\"bytes20\"}],\"name\":\"drainMigration\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enumerateAll\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enumerateBlocked\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"enumerateDrainable\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"addresses\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isBlacklisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"isDrainable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"contractIGovernedContract\",\"name\":\"_oldImpl\",\"type\":\"address\"}],\"name\":\"migrate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"migration\",\"outputs\":[{\"internalType\":\"contractGen2Migration\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"mnregistry_proxy\",\"outputs\":[{\"internalType\":\"contractIGovernedProxy\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"onDrain\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposal_creator\",\"outputs\":[{\"internalType\":\"contractBlacklistV1ProposalCreator\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"proposals\",\"outputs\":[{\"internalType\":\"contractIBlacklistProposal\",\"name\":\"enforce\",\"type\":\"address\"},{\"internalType\":\"contractIBlacklistProposal\",\"name\":\"revoke\",\"type\":\"address\"},{\"internalType\":\"contractIBlacklistProposal\",\"name\":\"drain\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"propose\",\"outputs\":[{\"internalType\":\"contractIBlacklistProposal\",\"name\":\"\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"proposeDrain\",\"outputs\":[{\"internalType\":\"contractIBlacklistProposal\",\"name\":\"\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"proposeRevoke\",\"outputs\":[{\"internalType\":\"contractIBlacklistProposal\",\"name\":\"\",\"type\":\"address\"}],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proxy\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"v1storage\",\"outputs\":[{\"internalType\":\"contractStorageBlacklistRegistryV1\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]"
    32  
    33  // BlacklistRegistryV1Bin is the compiled bytecode used for deploying new contracts.
    34  const BlacklistRegistryV1Bin = `60806040523480156200001157600080fd5b506040516200608a3803806200608a833981810160405260a08110156200003757600080fd5b50805160208201516040808401516060850151608090950151600080546001600160a01b0319166001600160a01b0387161790559151939492939092919062000080906200014c565b604051809103906000f0801580156200009d573d6000803e3d6000fd5b50600280546001600160a01b0319166001600160a01b0392909216919091179055604051620000cc906200015a565b604051809103906000f080158015620000e9573d6000803e3d6000fd5b50600380546001600160a01b03199081166001600160a01b03938416179091556004805482169683169690961790955560058054861694821694909417909355600680548516928416929092179091556007805490931691161790555062000168565b6118968062003cc083390190565b610b34806200555683390190565b613b4880620001786000396000f3fe6080604052600436106101695760003560e01c806379d7bc07116100cb578063d1e8ebda1161007f578063f444115211610059578063f4441152146105aa578063fe575a87146105bf578063fe7334e8146105ff57610169565b8063d1e8ebda1461054d578063ec55688914610580578063ee33f9d21461059557610169565b806394c210fc116100b057806394c210fc146104e3578063bc393afb146104f8578063ce5494bb1461050d57610169565b806379d7bc071461048e5780638ad4012f146104ce57610169565b80632d059305116101225780633341b445116101075780633341b4451461035f5780633502a130146103d75780635603125c1461042957610169565b80632d059305146102f65780633303bbb11461030b57610169565b806306ec16f81161015357806306ec16f81461026e5780631705a3bd146102ae578063244fcea5146102c357610169565b8062f55d9d146101d05780630126795114610212575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b3480156101dc57600080fd5b50610210600480360360208110156101f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610614565b005b6102456004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106bc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561027a57600080fd5b506102106004803603602081101561029157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f39565b3480156102ba57600080fd5b50610245611a20565b610245600480360360208110156102d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a3c565b34801561030257600080fd5b50610245612083565b34801561031757600080fd5b5061034b6004803603602081101561032e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661209f565b604080519115158252519081900360200190f35b34801561036b57600080fd5b5061039f6004803603602081101561038257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661234c565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156103e357600080fd5b50610210600480360360408110156103fa57600080fd5b50803590602001357fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016612409565b34801561043557600080fd5b5061043e6125bc565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047a578181015183820152602001610462565b505050509050019250505060405180910390f35b34801561049a57600080fd5b50610210600480360360208110156104b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166127b2565b3480156104da57600080fd5b506102456128b4565b3480156104ef57600080fd5b506102456128d0565b34801561050457600080fd5b5061043e6128ec565b34801561051957600080fd5b506102106004803603602081101561053057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612a44565b6102456004803603602081101561056357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612ad2565b34801561058c57600080fd5b50610245612fae565b3480156105a157600080fd5b5061043e612fca565b3480156105b657600080fd5b506102456131bc565b3480156105cb57600080fd5b5061034b600480360360208110156105e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166131d8565b34801561060b57600080fd5b506102456133df565b60005473ffffffffffffffffffffffffffffffffffffffff16331461069a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6106a3816133fb565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b600060015460001461072f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055610745683635c9adc5dea0000061350c565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169160009182918291859163323ab409916024808301926080929190829003018186803b1580156107c157600080fd5b505afa1580156107d5573d6000803e3d6000fd5b505050506040513d60808110156107eb57600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff831615610e3e5773ffffffffffffffffffffffffffffffffffffffff821615610b6c578173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d60208110156108a957600080fd5b505115610a89578273ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f857600080fd5b505af115801561090c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff8116156109ed578073ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109d457600080fd5b505af11580156109e8573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610a6c57600080fd5b505af1158015610a80573d6000803e3d6000fd5b50505050610b67565b8173ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b505115610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416c726561647920616374697665202831290000000000000000000000000000604482015290519081900360640190fd5b610e3e565b8273ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015610bb257600080fd5b505afa158015610bc6573d6000803e3d6000fd5b505050506040513d6020811015610bdc57600080fd5b50518015610c5957508273ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2b57600080fd5b505afa158015610c3f573d6000803e3d6000fd5b505050506040513d6020811015610c5557600080fd5b5051155b15610dd7578273ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ca657600080fd5b505af1158015610cba573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811615610d3b578073ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b50505050610e3e565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416c726561647920616374697665202832290000000000000000000000000000604482015290519081900360640190fd5b6000610e486135bb565b604080517fac31d62200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152808416602483015291519293509087169163ac31d6229160448082019260009290919082900301818387803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff85811682529151918b1693507fea0d3b1afc7aa1754f902b277d6f473e2f4a4526e94797814c2042405d692557925081900360200190a260006001559695505050505050565b60015415610fa857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169160009182918291859163323ab409916024808301926080929190829003018186803b15801561102857600080fd5b505afa15801561103c573d6000803e3d6000fd5b505050506040513d608081101561105257600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff83166110ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f7468696e6720746f20636f6c6c6563740000000000000000000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d602081101561115a57600080fd5b50516111c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f456e666f72636520766f74696e6720696e2070726f6772657373000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120d57600080fd5b505afa158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b505161133d578273ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561128557600080fd5b505af1158015611299573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166329092d0e866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561131c57600080fd5b505af1158015611330573d6000803e3d6000fd5b5050505050505050611a18565b73ffffffffffffffffffffffffffffffffffffffff8116156115e9578073ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b15801561139f57600080fd5b505afa1580156113b3573d6000803e3d6000fd5b505050506040513d60208110156113c957600080fd5b505161143657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f447261696e20766f74696e6720696e2070726f67726573730000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d60208110156114a657600080fd5b50511561151457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4163636f756e74206d75737420626520647261696e6564000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b5050604080517f13756c8f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152600060248301819052925190891694506313756c8f93506044808301939282900301818387803b15801561131c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216156119b1578173ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b15801561164b57600080fd5b505afa15801561165f573d6000803e3d6000fd5b505050506040513d602081101561167557600080fd5b50516116e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5265766f6b6520766f74696e6720696e2070726f677265737300000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b5051156118d3578273ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117a157600080fd5b505af11580156117b5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561180157600080fd5b505af1158015611815573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff81161561183757fe5b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156118b657600080fd5b505af11580156118ca573d6000803e3d6000fd5b505050506119a8565b8173ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561191b57600080fd5b505af115801561192f573d6000803e3d6000fd5b5050604080517f45507a9e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152600060248301819052925190891694506345507a9e93506044808301939282900301818387803b15801561131c57600080fd5b50505050611a18565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f2070726f706f73616c7320726561647920746f20636f6c6c656374000000604482015290519081900360640190fd5b506000600155565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154600014611aaf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055611ac568056bc75e2d6310000061350c565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916000918291849163323ab40991602480820192608092909190829003018186803b158015611b4057600080fd5b505afa158015611b54573d6000803e3d6000fd5b505050506040513d6080811015611b6a57600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216611bfa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f206e65656420283129000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615611dcf578073ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5c57600080fd5b505afa158015611c70573d6000803e3d6000fd5b505050506040513d6020811015611c8657600080fd5b5051611cf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f416c726561647920616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3957600080fd5b505afa158015611d4d573d6000803e3d6000fd5b505050506040513d6020811015611d6357600080fd5b5051611dca578073ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611db157600080fd5b505af1158015611dc5573d6000803e3d6000fd5b505050505b611f89565b8173ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1557600080fd5b505afa158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051611eac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f74206170706c696361626c65000000000000000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef257600080fd5b505afa158015611f06573d6000803e3d6000fd5b505050506040513d6020811015611f1c57600080fd5b5051611f8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f206e65656420283229000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000611f936135bb565b604080517f45507a9e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015280841660248301529151929350908616916345507a9e9160448082019260009290919082900301818387803b15801561200f57600080fd5b505af1158015612023573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff85811682529151918a1693507f2e46fe8e502a44b05a85d4346d3e208fc845c81a81c9b7e4db08a33dca59faff925081900360200190a2600060015595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093849384938493919092169163323ab409916024808301926080929190829003018186803b15801561211b57600080fd5b505afa15801561212f573d6000803e3d6000fd5b505050506040513d608081101561214557600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff83166121825760009350505050612347565b8273ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121c857600080fd5b505afa1580156121dc573d6000803e3d6000fd5b505050506040513d60208110156121f257600080fd5b50516122045760009350505050612347565b73ffffffffffffffffffffffffffffffffffffffff82161580159061229757508173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561226a57600080fd5b505afa15801561227e573d6000803e3d6000fd5b505050506040513d602081101561229457600080fd5b50515b156122a85760009350505050612347565b73ffffffffffffffffffffffffffffffffffffffff81166122cf5760009350505050612347565b8073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561231557600080fd5b505afa158015612329573d6000803e3d6000fd5b505050506040513d602081101561233f57600080fd5b505193505050505b919050565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000938493849391169163323ab40991602480820192608092909190829003018186803b1580156123c557600080fd5b505afa1580156123d9573d6000803e3d6000fd5b505050506040513d60808110156123ef57600080fd5b508051602082015160409092015190969195509350915050565b6001541561247857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055612489606082901c61209f565b6124f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420647261696e61626c6500000000000000000000000000000000000000604482015290519081900360640190fd5b600554604080517fa723b35a000000000000000000000000000000000000000000000000000000008152600481018590527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000084166024820152905173ffffffffffffffffffffffffffffffffffffffff9092169163a723b35a9160448082019260009290919082900301818387803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b505050506125b38160601c613814565b50506000600155565b600354604080517fda0321cd000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163da0321cd916004808301926000929190829003018186803b15801561262757600080fd5b505afa15801561263b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561268257600080fd5b81019080805160405193929190846401000000008211156126a257600080fd5b9083019060208201858111156126b757600080fd5b82518660208202830111640100000000821117156126d457600080fd5b82525081516020918201928201910280838360005b838110156127015781810151838201526020016126e9565b5050505090500160405250505090506000815190505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190156127ae5761275c82828151811061274f57fe5b60200260200101516131d8565b6127a957600082828151811061276e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b612717565b5090565b6001541561282157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805560005473ffffffffffffffffffffffffffffffffffffffff1632146128ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420636f6e73656e73757300000000000000000000000000000000000000604482015290519081900360640190fd5b611a1881613814565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517fda0321cd000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163da0321cd916004808301926000929190829003018186803b15801561295757600080fd5b505afa15801561296b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156129b257600080fd5b81019080805160405193929190846401000000008211156129d257600080fd5b9083019060208201858111156129e757600080fd5b8251866020820283011164010000000082111715612a0457600080fd5b82525081516020918201928201910280838360005b83811015612a31578181015183820152602001612a19565b5050505090500160405250505090505b90565b60005473ffffffffffffffffffffffffffffffffffffffff163314612aca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b612acf815b50565b6000600154600014612b4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055612b5b68056bc75e2d6310000061350c565b612b64826131d8565b612bcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420626c61636b6c69737465640000000000000000000000000000000000604482015290519081900360640190fd5b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291519190921691600091839163323ab409916024808301926080929190829003018186803b158015612c4757600080fd5b505afa158015612c5b573d6000803e3d6000fd5b505050506040513d6080811015612c7157600080fd5b5060400151905073ffffffffffffffffffffffffffffffffffffffff811615612eb5578073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cda57600080fd5b505afa158015612cee573d6000803e3d6000fd5b505050506040513d6020811015612d0457600080fd5b505115612d7257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f74206e656564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015612db857600080fd5b505afa158015612dcc573d6000803e3d6000fd5b505050506040513d6020811015612de257600080fd5b505115612e4e578073ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e3157600080fd5b505af1158015612e45573d6000803e3d6000fd5b50505050612eb5565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f566f74696e6720696e2070726f67726573730000000000000000000000000000604482015290519081900360640190fd5b6000612ebf6135bb565b604080517f13756c8f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015280841660248301529151929350908516916313756c8f9160448082019260009290919082900301818387803b158015612f3b57600080fd5b505af1158015612f4f573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8581168252915191891693507fb0163b33033bcea41a78d2d4a9c596c29b0667259543d6d56b8cac8cd92d2cea925081900360200190a26000600155949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517fda0321cd000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163da0321cd916004808301926000929190829003018186803b15801561303557600080fd5b505afa158015613049573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561309057600080fd5b81019080805160405193929190846401000000008211156130b057600080fd5b9083019060208201858111156130c557600080fd5b82518660208202830111640100000000821117156130e257600080fd5b82525081516020918201928201910280838360005b8381101561310f5781810151838201526020016130f7565b5050505090500160405250505090506000815190505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190156127ae5761316a82828151811061315d57fe5b602002602001015161209f565b6131b757600082828151811061317c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b613125565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093929092169183918291849163323ab409916024808301926080929190829003018186803b15801561325457600080fd5b505afa158015613268573d6000803e3d6000fd5b505050506040513d608081101561327e57600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff81161580159061331f57508073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132f257600080fd5b505afa158015613306573d6000803e3d6000fd5b505050506040513d602081101561331c57600080fd5b50515b156133305760009350505050612347565b73ffffffffffffffffffffffffffffffffffffffff8216158015906133c357508173ffffffffffffffffffffffffffffffffffffffff16632173a8f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561339657600080fd5b505afa1580156133aa573d6000803e3d6000fd5b505050506040513d60208110156133c057600080fd5b50515b156133d45760019350505050612347565b506000949350505050565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b15801561346f57600080fd5b505af1158015613483573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341c0e1b56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156134f157600080fd5b505af1158015613505573d6000803e3d6000fd5b5050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1661352d613ae4565b73ffffffffffffffffffffffffffffffffffffffff16141561354d575060005b803414612acf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f496e76616c696420666565000000000000000000000000000000000000000000604482015290519081900360640190fd5b600254600454600091829160609173ffffffffffffffffffffffffffffffffffffffff908116917f3e68680a00000000000000000000000000000000000000000000000000000000911661360d613ae4565b6040805173ffffffffffffffffffffffffffffffffffffffff93841660248201529190921660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317835290518151919290918291908083835b602083106136e657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016136a9565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114613746576040519150601f19603f3d011682016040523d82523d6000602084013e61374b565b606091505b50915091508181906137f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137ba5781810151838201526020016137a2565b50505050905090810190601f1680156137e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080806020019051602081101561380b57600080fd5b50519250505090565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169160009182918291859163323ab409916024808301926080929190829003018186803b15801561389057600080fd5b505afa1580156138a4573d6000803e3d6000fd5b505050506040513d60808110156138ba57600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff831615613505578273ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561393457600080fd5b505af1158015613948573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff8216156139c9578173ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156139b057600080fd5b505af11580156139c4573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff811615613a46578073ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613a2d57600080fd5b505af1158015613a41573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015613ac557600080fd5b505af1158015613ad9573d6000803e3d6000fd5b505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16331415613b0c575032612a41565b5033612a4156fea265627a7a72315820342547331d8cc02c483a22f276d79979d91310ecd1c073c9da01b8fec4beb7d864736f6c634300051000326080604052600080546001600160a01b03191633179055611871806100256000396000f3fe6080604052600436106100345760003560e01c806313af4035146100395780633e68680a1461007b57806341c0e1b5146100df575b600080fd5b34801561004557600080fd5b506100796004803603602081101561005c57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166100f4565b005b6100b66004803603604081101561009157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166101c1565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100eb57600080fd5b50610079610304565b60005473ffffffffffffffffffffffffffffffffffffffff16331461017a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000805473ffffffffffffffffffffffffffffffffffffffff16331461024857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b600083836040516102589061038d565b73ffffffffffffffffffffffffffffffffffffffff928316815291166020820152604080519182900301906000f080158015610298573d6000803e3d6000fd5b5090508073ffffffffffffffffffffffffffffffffffffffff16632ded3227346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156102e357600080fd5b505af11580156102f7573d6000803e3d6000fd5b5093979650505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461038a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b33ff5b6114a28061039b8339019056fe60806040523480156200001157600080fd5b50604051620014a2380380620014a2833981810160405260408110156200003757600080fd5b50805160209182015160018054336001600160a01b031991821617909155436002556000805482166001600160a01b03808616918217835562093a8042810160035560048054909516918616919091178455604080517f8abf60770000000000000000000000000000000000000000000000000000000081529051969795968896600a9693958995909485949193638abf60779383830193909290829003018186803b158015620000e757600080fd5b505afa158015620000fc573d6000803e3d6000fd5b505050506040513d60208110156200011357600080fd5b5051604080517f06661abd00000000000000000000000000000000000000000000000000000000815290516001600160a01b03909216916306661abd9160048082019260a092909190829003018186803b1580156200017157600080fd5b505afa15801562000186573d6000803e3d6000fd5b505050506040513d60a08110156200019d57600080fd5b5060408101516080909101519092509050806200021b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4e6f7420726561647920666f722070726f706f73616c73000000000000000000604482015290519081900360640190fd5b600281048210156200028e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f41637469766520776569676874203c20312f3220657665722077656967687400604482015290519081900360640190fd5b600160ff861610156200030257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f51756f72756d206d696e00000000000000000000000000000000000000000000604482015290519081900360640190fd5b606460ff861611156200037657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f51756f72756d206d617800000000000000000000000000000000000000000000604482015290519081900360640190fd5b6008829055606460ff8616830204600955603360ff8616106200039f57600954600a55620003aa565b60646033830204600a555b6000600954116200041c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f51756f72756d2077656967687400000000000000000000000000000000000000604482015290519081900360640190fd5b6000600a54116200048e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f46696e6973682077656967687400000000000000000000000000000000000000604482015290519081900360640190fd5b5050505050505050610ffc80620004a66000396000f3fe6080604052600436106101755760003560e01c80637b352962116100cb578063aec2ccae1161007f578063c86e6c1511610059578063c86e6c1514610405578063e52253811461041a578063fe7334e81461042f57610175565b8063aec2ccae1461039b578063c2472ef8146103db578063c40a70f8146103f057610175565b806391840a6b116100b057806391840a6b14610331578063990a663b14610346578063adfaa72e1461035b57610175565b80637b3529621461030757806383197ef01461031c57610175565b80633d1db3e91161012d57806360f96a8f1161010757806360f96a8f1461029f57806375df0f99146102dd5780637639b1eb146102f257610175565b80633d1db3e9146102605780635051a5ec1461027557806356c2a0a11461028a57610175565b806329dcb0cf1161015e57806329dcb0cf1461022c5780632ded3227146102415780633ccfd60b1461024b57610175565b80630b62be45146101dc5780632173a8f914610203575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f7420616c6c6f776564000000000000000000000000000000000000000000604482015290519081900360640190fd5b3480156101e857600080fd5b506101f1610444565b60408051918252519081900360200190f35b34801561020f57600080fd5b5061021861044a565b604080519115158252519081900360200190f35b34801561023857600080fd5b506101f161049c565b6102496104a2565b005b34801561025757600080fd5b50610249610532565b34801561026c57600080fd5b506101f16105ef565b34801561028157600080fd5b506102186105f5565b34801561029657600080fd5b50610249610641565b3480156102ab57600080fd5b506102b4610654565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156102e957600080fd5b506101f1610670565b3480156102fe57600080fd5b506101f1610676565b34801561031357600080fd5b5061021861067c565b34801561032857600080fd5b506102496106a6565b34801561033d57600080fd5b506101f1610747565b34801561035257600080fd5b506101f161074d565b34801561036757600080fd5b506102186004803603602081101561037e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610753565b3480156103a757600080fd5b50610218600480360360208110156103be57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166108ed565b3480156103e757600080fd5b50610249610902565b3480156103fc57600080fd5b506102b4610915565b34801561041157600080fd5b506101f1610931565b34801561042657600080fd5b50610249610937565b34801561043b57600080fd5b506102b4610c8c565b60025481565b60006104546105f5565b1561046157506001610499565b6006546007546002810282118015610482575069152d02c7e14af680000082115b1561049257600192505050610499565b6000925050505b90565b60035481565b60015473ffffffffffffffffffffffffffffffffffffffff16331461052857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b6005805434019055565b61053a6105f5565b6105a557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f742061636365707465640000000000000000000000000000000000000000604482015290519081900360640190fd5b60045460405173ffffffffffffffffffffffffffffffffffffffff90911690303180156108fc02916000818181858888f193505050501580156105ec573d6000803e3d6000fd5b50565b600a5481565b6000600a546006541061060a57506001610499565b61061261067c565b61061e57506000610499565b60095460075460065401101561063657506000610499565b506007546006541190565b610649610ca8565b600780549091019055565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60095481565b60065481565b6000426003541115806106935750600a5460065410155b806106a15750600a54600754115b905090565b60015473ffffffffffffffffffffffffffffffffffffffff16331461072c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b60045473ffffffffffffffffffffffffffffffffffffffff16ff5b60085481565b60055481565b60008054604080517f8abf60770000000000000000000000000000000000000000000000000000000081529051839273ffffffffffffffffffffffffffffffffffffffff1691638abf6077916004808301926020929190829003018186803b1580156107be57600080fd5b505afa1580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b5051604080517fb83e160500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015291519293506000929184169163b83e16059160248082019260e092909190829003018186803b15801561086057600080fd5b505afa158015610874573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060e081101561089957600080fd5b5060a00151600354909150421080156108b3575060025481105b80156108e5575073ffffffffffffffffffffffffffffffffffffffff84166000908152600b602052604090205460ff16155b949350505050565b600b6020526000908152604090205460ff1681565b61090a610ca8565b600680549091019055565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b61093f61067c565b8015610950575061094e6105f5565b155b6109bb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420636f6c6c65637461626c650000000000000000000000000000000000604482015290519081900360640190fd5b60015473ffffffffffffffffffffffffffffffffffffffff163314610a4157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4f6e6c7920706172656e74000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610aaa57600080fd5b505afa158015610abe573d6000803e3d6000fd5b505050506040513d6020811015610ad457600080fd5b5051604080517fa2731784000000000000000000000000000000000000000000000000000000008152905191925060009173ffffffffffffffffffffffffffffffffffffffff84169163a2731784916004808301926020929190829003018186803b158015610b4257600080fd5b505afa158015610b56573d6000803e3d6000fd5b505050506040513d6020811015610b6c57600080fd5b5051604080517f8abf6077000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff90921691638abf607791600480820192602092909190829003018186803b158015610bd657600080fd5b505afa158015610bea573d6000803e3d6000fd5b505050506040513d6020811015610c0057600080fd5b5051604080517fd7bb99ba000000000000000000000000000000000000000000000000000000008152905191925073ffffffffffffffffffffffffffffffffffffffff83169163d7bb99ba91303191600480830192600092919082900301818588803b158015610c6f57600080fd5b505af1158015610c83573d6000803e3d6000fd5b50505050505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60004260035411610d1a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f46696e6973686564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638abf60776040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8357600080fd5b505afa158015610d97573d6000803e3d6000fd5b505050506040513d6020811015610dad57600080fd5b5051604080517fb83e160500000000000000000000000000000000000000000000000000000000815233600482018190529151929350909160009173ffffffffffffffffffffffffffffffffffffffff85169163b83e16059160248082019260e092909190829003018186803b158015610e2657600080fd5b505afa158015610e3a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525060e0811015610e5f57600080fd5b50608081015160a09091015160025491955091508110610ee057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4e6f7420656c696769626c650000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600b602052604090205460ff1615610f7557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f416c726561647920766f74656400000000000000000000000000000000000000604482015290519081900360640190fd5b5073ffffffffffffffffffffffffffffffffffffffff166000908152600b6020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055509056fea265627a7a723158206de1fd71f2d0c8d3b40fa4f7391a6316064bac5a878a79cbdf3b07125d031ce064736f6c63430005100032a265627a7a723158203377832a899798ee2d4245b4a576915dbc50e04b57c8a641a54cbc672a901d5864736f6c634300051000326080604052600080546001600160a01b03191633179055610b0f806100256000396000f3fe608060405234801561001057600080fd5b50600436106100a35760003560e01c806341c0e1b5116100765780639aa5b6c41161005b5780639aa5b6c414610203578063ac31d62214610249578063da0321cd14610284576100a3565b806341c0e1b5146101c057806345507a9e146101c8576100a3565b806313756c8f146100a857806313af4035146100e557806329092d0e14610118578063323ab4091461014b575b600080fd5b6100e3600480360360408110156100be57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166102dc565b005b6100e3600480360360208110156100fb57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166103dc565b6100e36004803603602081101561012e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104a9565b61017e6004803603602081101561016157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106e1565b6040805173ffffffffffffffffffffffffffffffffffffffff958616815293851660208501529190931682820152606082019290925290519081900360800190f35b6100e3610727565b6100e3600480360360408110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166107b0565b6102206004803603602081101561021957600080fd5b50356108b0565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6100e36004803603604081101561025f57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108e4565b61028c610a26565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156102c85781810151838201526020016102b0565b505050509050019250505060405180910390f35b60005473ffffffffffffffffffffffffffffffffffffffff16331461036257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160205260409020805490911661039357fe5b60020180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b60005473ffffffffffffffffffffffffffffffffffffffff16331461046257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005473ffffffffffffffffffffffffffffffffffffffff16331461052f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8082166000908152600160205260409020805490911661056057fe5b60028054600091907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190811061059457fe5b600091825260208083209091015460038086015473ffffffffffffffffffffffffffffffffffffffff90921680855260019093526040909320909201829055600280549193508392909181106105e657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600280548061063957fe5b6000828152602080822083017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff0000000000000000000000000000000000000000908116909155930190935573ffffffffffffffffffffffffffffffffffffffff959095168552600191829052604085208054821681559182018054821690556002820180549091169055600301929092555050565b6001602081905260009182526040909120805491810154600282015460039092015473ffffffffffffffffffffffffffffffffffffffff93841693918216929091169084565b60005473ffffffffffffffffffffffffffffffffffffffff1633146107ad57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b33ff5b60005473ffffffffffffffffffffffffffffffffffffffff16331461083657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8083166000908152600160205260409020805490911661086757fe5b60010180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905550565b600281815481106108bd57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b60005473ffffffffffffffffffffffffffffffffffffffff16331461096a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f4e6f74206f776e65722100000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808316600090815260016020526040902080549091161561099c57fe5b805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161782556002805460039093018390556001830181556000527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace9091018054939092169216919091179055565b60025460408051828152602080840282010190915260609190818015610a56578160200160208202803883390190505b50915060005b81811015610ad55760028181548110610a7157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16838281518110610aa857fe5b73ffffffffffffffffffffffffffffffffffffffff90921660209283029190910190910152600101610a5c565b50509056fea265627a7a723158207283bc956f65d8de291ba5342c22df4bcd6915947529a281f277b04ca65b3aef64736f6c63430005100032`
    35  
    36  // DeployBlacklistRegistryV1 deploys a new Ethereum contract, binding an instance of BlacklistRegistryV1 to it.
    37  func DeployBlacklistRegistryV1(auth *bind.TransactOpts, backend bind.ContractBackend, _proxy common.Address, _mnregistry_proxy common.Address, _migration common.Address, _compensation_fund common.Address, _ebi_signer common.Address) (common.Address, *types.Transaction, *BlacklistRegistryV1, error) {
    38  	parsed, err := abi.JSON(strings.NewReader(BlacklistRegistryV1ABI))
    39  	if err != nil {
    40  		return common.Address{}, nil, nil, err
    41  	}
    42  	address, tx, contract, err := bind.DeployContract(auth, parsed, common.FromHex(BlacklistRegistryV1Bin), backend, _proxy, _mnregistry_proxy, _migration, _compensation_fund, _ebi_signer)
    43  	if err != nil {
    44  		return common.Address{}, nil, nil, err
    45  	}
    46  	return address, tx, &BlacklistRegistryV1{BlacklistRegistryV1Caller: BlacklistRegistryV1Caller{contract: contract}, BlacklistRegistryV1Transactor: BlacklistRegistryV1Transactor{contract: contract}, BlacklistRegistryV1Filterer: BlacklistRegistryV1Filterer{contract: contract}}, nil
    47  }
    48  
    49  // BlacklistRegistryV1Bin is the compiled bytecode of contract after deployment.
    50  const BlacklistRegistryV1RuntimeBin = `6080604052600436106101695760003560e01c806379d7bc07116100cb578063d1e8ebda1161007f578063f444115211610059578063f4441152146105aa578063fe575a87146105bf578063fe7334e8146105ff57610169565b8063d1e8ebda1461054d578063ec55688914610580578063ee33f9d21461059557610169565b806394c210fc116100b057806394c210fc146104e3578063bc393afb146104f8578063ce5494bb1461050d57610169565b806379d7bc071461048e5780638ad4012f146104ce57610169565b80632d059305116101225780633341b445116101075780633341b4451461035f5780633502a130146103d75780635603125c1461042957610169565b80632d059305146102f65780633303bbb11461030b57610169565b806306ec16f81161015357806306ec16f81461026e5780631705a3bd146102ae578063244fcea5146102c357610169565b8062f55d9d146101d05780630126795114610212575b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420737570706f7274656400000000000000000000000000000000000000604482015290519081900360640190fd5b3480156101dc57600080fd5b50610210600480360360208110156101f357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610614565b005b6102456004803603602081101561022857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166106bc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b34801561027a57600080fd5b506102106004803603602081101561029157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610f39565b3480156102ba57600080fd5b50610245611a20565b610245600480360360208110156102d957600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611a3c565b34801561030257600080fd5b50610245612083565b34801561031757600080fd5b5061034b6004803603602081101561032e57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661209f565b604080519115158252519081900360200190f35b34801561036b57600080fd5b5061039f6004803603602081101561038257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661234c565b6040805173ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b3480156103e357600080fd5b50610210600480360360408110156103fa57600080fd5b50803590602001357fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016612409565b34801561043557600080fd5b5061043e6125bc565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561047a578181015183820152602001610462565b505050509050019250505060405180910390f35b34801561049a57600080fd5b50610210600480360360208110156104b157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166127b2565b3480156104da57600080fd5b506102456128b4565b3480156104ef57600080fd5b506102456128d0565b34801561050457600080fd5b5061043e6128ec565b34801561051957600080fd5b506102106004803603602081101561053057600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612a44565b6102456004803603602081101561056357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16612ad2565b34801561058c57600080fd5b50610245612fae565b3480156105a157600080fd5b5061043e612fca565b3480156105b657600080fd5b506102456131bc565b3480156105cb57600080fd5b5061034b600480360360208110156105e257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166131d8565b34801561060b57600080fd5b506102456133df565b60005473ffffffffffffffffffffffffffffffffffffffff16331461069a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6106a3816133fb565b8073ffffffffffffffffffffffffffffffffffffffff16ff5b600060015460001461072f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055610745683635c9adc5dea0000061350c565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301529151919092169160009182918291859163323ab409916024808301926080929190829003018186803b1580156107c157600080fd5b505afa1580156107d5573d6000803e3d6000fd5b505050506040513d60808110156107eb57600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff831615610e3e5773ffffffffffffffffffffffffffffffffffffffff821615610b6c578173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561087f57600080fd5b505afa158015610893573d6000803e3d6000fd5b505050506040513d60208110156108a957600080fd5b505115610a89578273ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156108f857600080fd5b505af115801561090c573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561095857600080fd5b505af115801561096c573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff8116156109ed578073ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156109d457600080fd5b505af11580156109e8573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610a6c57600080fd5b505af1158015610a80573d6000803e3d6000fd5b50505050610b67565b8173ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015610acf57600080fd5b505afa158015610ae3573d6000803e3d6000fd5b505050506040513d6020811015610af957600080fd5b505115610b6757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416c726561647920616374697665202831290000000000000000000000000000604482015290519081900360640190fd5b610e3e565b8273ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015610bb257600080fd5b505afa158015610bc6573d6000803e3d6000fd5b505050506040513d6020811015610bdc57600080fd5b50518015610c5957508273ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015610c2b57600080fd5b505afa158015610c3f573d6000803e3d6000fd5b505050506040513d6020811015610c5557600080fd5b5051155b15610dd7578273ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610ca657600080fd5b505af1158015610cba573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811615610d3b578073ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610d2257600080fd5b505af1158015610d36573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e876040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610dba57600080fd5b505af1158015610dce573d6000803e3d6000fd5b50505050610e3e565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f416c726561647920616374697665202832290000000000000000000000000000604482015290519081900360640190fd5b6000610e486135bb565b604080517fac31d62200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a81166004830152808416602483015291519293509087169163ac31d6229160448082019260009290919082900301818387803b158015610ec457600080fd5b505af1158015610ed8573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff85811682529151918b1693507fea0d3b1afc7aa1754f902b277d6f473e2f4a4526e94797814c2042405d692557925081900360200190a260006001559695505050505050565b60015415610fa857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169160009182918291859163323ab409916024808301926080929190829003018186803b15801561102857600080fd5b505afa15801561103c573d6000803e3d6000fd5b505050506040513d608081101561105257600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff83166110ea57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4e6f7468696e6720746f20636f6c6c6563740000000000000000000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b15801561113057600080fd5b505afa158015611144573d6000803e3d6000fd5b505050506040513d602081101561115a57600080fd5b50516111c757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f456e666f72636520766f74696e6720696e2070726f6772657373000000000000604482015290519081900360640190fd5b8273ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561120d57600080fd5b505afa158015611221573d6000803e3d6000fd5b505050506040513d602081101561123757600080fd5b505161133d578273ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561128557600080fd5b505af1158015611299573d6000803e3d6000fd5b505050508373ffffffffffffffffffffffffffffffffffffffff166329092d0e866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561131c57600080fd5b505af1158015611330573d6000803e3d6000fd5b5050505050505050611a18565b73ffffffffffffffffffffffffffffffffffffffff8116156115e9578073ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b15801561139f57600080fd5b505afa1580156113b3573d6000803e3d6000fd5b505050506040513d60208110156113c957600080fd5b505161143657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601860248201527f447261696e20766f74696e6720696e2070726f67726573730000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561147c57600080fd5b505afa158015611490573d6000803e3d6000fd5b505050506040513d60208110156114a657600080fd5b50511561151457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4163636f756e74206d75737420626520647261696e6564000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b5050604080517f13756c8f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152600060248301819052925190891694506313756c8f93506044808301939282900301818387803b15801561131c57600080fd5b73ffffffffffffffffffffffffffffffffffffffff8216156119b1578173ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b15801561164b57600080fd5b505afa15801561165f573d6000803e3d6000fd5b505050506040513d602081101561167557600080fd5b50516116e257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f5265766f6b6520766f74696e6720696e2070726f677265737300000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561172857600080fd5b505afa15801561173c573d6000803e3d6000fd5b505050506040513d602081101561175257600080fd5b5051156118d3578273ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156117a157600080fd5b505af11580156117b5573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561180157600080fd5b505af1158015611815573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff81161561183757fe5b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156118b657600080fd5b505af11580156118ca573d6000803e3d6000fd5b505050506119a8565b8173ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561191b57600080fd5b505af115801561192f573d6000803e3d6000fd5b5050604080517f45507a9e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8981166004830152600060248301819052925190891694506345507a9e93506044808301939282900301818387803b15801561131c57600080fd5b50505050611a18565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f4e6f2070726f706f73616c7320726561647920746f20636f6c6c656374000000604482015290519081900360640190fd5b506000600155565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b6000600154600014611aaf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055611ac568056bc75e2d6310000061350c565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152915191909216916000918291849163323ab40991602480820192608092909190829003018186803b158015611b4057600080fd5b505afa158015611b54573d6000803e3d6000fd5b505050506040513d6080811015611b6a57600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216611bfa57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f206e65656420283129000000000000000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff811615611dcf578073ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015611c5c57600080fd5b505afa158015611c70573d6000803e3d6000fd5b505050506040513d6020811015611c8657600080fd5b5051611cf357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f416c726561647920616374697665000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015611d3957600080fd5b505afa158015611d4d573d6000803e3d6000fd5b505050506040513d6020811015611d6357600080fd5b5051611dca578073ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015611db157600080fd5b505af1158015611dc5573d6000803e3d6000fd5b505050505b611f89565b8173ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015611e1557600080fd5b505afa158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051611eac57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4e6f74206170706c696361626c65000000000000000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015611ef257600080fd5b505afa158015611f06573d6000803e3d6000fd5b505050506040513d6020811015611f1c57600080fd5b5051611f8957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f4e6f206e65656420283229000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000611f936135bb565b604080517f45507a9e00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff898116600483015280841660248301529151929350908616916345507a9e9160448082019260009290919082900301818387803b15801561200f57600080fd5b505af1158015612023573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff85811682529151918a1693507f2e46fe8e502a44b05a85d4346d3e208fc845c81a81c9b7e4db08a33dca59faff925081900360200190a2600060015595945050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093849384938493919092169163323ab409916024808301926080929190829003018186803b15801561211b57600080fd5b505afa15801561212f573d6000803e3d6000fd5b505050506040513d608081101561214557600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff83166121825760009350505050612347565b8273ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b1580156121c857600080fd5b505afa1580156121dc573d6000803e3d6000fd5b505050506040513d60208110156121f257600080fd5b50516122045760009350505050612347565b73ffffffffffffffffffffffffffffffffffffffff82161580159061229757508173ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561226a57600080fd5b505afa15801561227e573d6000803e3d6000fd5b505050506040513d602081101561229457600080fd5b50515b156122a85760009350505050612347565b73ffffffffffffffffffffffffffffffffffffffff81166122cf5760009350505050612347565b8073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b15801561231557600080fd5b505afa158015612329573d6000803e3d6000fd5b505050506040513d602081101561233f57600080fd5b505193505050505b919050565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015291516000938493849391169163323ab40991602480820192608092909190829003018186803b1580156123c557600080fd5b505afa1580156123d9573d6000803e3d6000fd5b505050506040513d60808110156123ef57600080fd5b508051602082015160409092015190969195509350915050565b6001541561247857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055612489606082901c61209f565b6124f457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420647261696e61626c6500000000000000000000000000000000000000604482015290519081900360640190fd5b600554604080517fa723b35a000000000000000000000000000000000000000000000000000000008152600481018590527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000084166024820152905173ffffffffffffffffffffffffffffffffffffffff9092169163a723b35a9160448082019260009290919082900301818387803b15801561258f57600080fd5b505af11580156125a3573d6000803e3d6000fd5b505050506125b38160601c613814565b50506000600155565b600354604080517fda0321cd000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163da0321cd916004808301926000929190829003018186803b15801561262757600080fd5b505afa15801561263b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561268257600080fd5b81019080805160405193929190846401000000008211156126a257600080fd5b9083019060208201858111156126b757600080fd5b82518660208202830111640100000000821117156126d457600080fd5b82525081516020918201928201910280838360005b838110156127015781810151838201526020016126e9565b5050505090500160405250505090506000815190505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190156127ae5761275c82828151811061274f57fe5b60200260200101516131d8565b6127a957600082828151811061276e57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b612717565b5090565b6001541561282157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001805560005473ffffffffffffffffffffffffffffffffffffffff1632146128ab57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f4e6f7420636f6e73656e73757300000000000000000000000000000000000000604482015290519081900360640190fd5b611a1881613814565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517fda0321cd000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163da0321cd916004808301926000929190829003018186803b15801561295757600080fd5b505afa15801561296b573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016820160405260208110156129b257600080fd5b81019080805160405193929190846401000000008211156129d257600080fd5b9083019060208201858111156129e757600080fd5b8251866020820283011164010000000082111715612a0457600080fd5b82525081516020918201928201910280838360005b83811015612a31578181015183820152602001612a19565b5050505090500160405250505090505b90565b60005473ffffffffffffffffffffffffffffffffffffffff163314612aca57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4e6f742070726f78790000000000000000000000000000000000000000000000604482015290519081900360640190fd5b612acf815b50565b6000600154600014612b4557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f5265656e74727900000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60018055612b5b68056bc75e2d6310000061350c565b612b64826131d8565b612bcf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4e6f7420626c61636b6c69737465640000000000000000000000000000000000604482015290519081900360640190fd5b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff858116600483015291519190921691600091839163323ab409916024808301926080929190829003018186803b158015612c4757600080fd5b505afa158015612c5b573d6000803e3d6000fd5b505050506040513d6080811015612c7157600080fd5b5060400151905073ffffffffffffffffffffffffffffffffffffffff811615612eb5578073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b158015612cda57600080fd5b505afa158015612cee573d6000803e3d6000fd5b505050506040513d6020811015612d0457600080fd5b505115612d7257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600860248201527f4e6f74206e656564000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16637b3529626040518163ffffffff1660e01b815260040160206040518083038186803b158015612db857600080fd5b505afa158015612dcc573d6000803e3d6000fd5b505050506040513d6020811015612de257600080fd5b505115612e4e578073ffffffffffffffffffffffffffffffffffffffff1663e52253816040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612e3157600080fd5b505af1158015612e45573d6000803e3d6000fd5b50505050612eb5565b604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f566f74696e6720696e2070726f67726573730000000000000000000000000000604482015290519081900360640190fd5b6000612ebf6135bb565b604080517f13756c8f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015280841660248301529151929350908516916313756c8f9160448082019260009290919082900301818387803b158015612f3b57600080fd5b505af1158015612f4f573d6000803e3d6000fd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8581168252915191891693507fb0163b33033bcea41a78d2d4a9c596c29b0667259543d6d56b8cac8cd92d2cea925081900360200190a26000600155949350505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517fda0321cd000000000000000000000000000000000000000000000000000000008152905160609273ffffffffffffffffffffffffffffffffffffffff169163da0321cd916004808301926000929190829003018186803b15801561303557600080fd5b505afa158015613049573d6000803e3d6000fd5b505050506040513d6000823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052602081101561309057600080fd5b81019080805160405193929190846401000000008211156130b057600080fd5b9083019060208201858111156130c557600080fd5b82518660208202830111640100000000821117156130e257600080fd5b82525081516020918201928201910280838360005b8381101561310f5781810151838201526020016130f7565b5050505090500160405250505090506000815190505b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810190156127ae5761316a82828151811061315d57fe5b602002602001015161209f565b6131b757600082828151811061317c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505b613125565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151600093929092169183918291849163323ab409916024808301926080929190829003018186803b15801561325457600080fd5b505afa158015613268573d6000803e3d6000fd5b505050506040513d608081101561327e57600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff81161580159061331f57508073ffffffffffffffffffffffffffffffffffffffff16635051a5ec6040518163ffffffff1660e01b815260040160206040518083038186803b1580156132f257600080fd5b505afa158015613306573d6000803e3d6000fd5b505050506040513d602081101561331c57600080fd5b50515b156133305760009350505050612347565b73ffffffffffffffffffffffffffffffffffffffff8216158015906133c357508173ffffffffffffffffffffffffffffffffffffffff16632173a8f96040518163ffffffff1660e01b815260040160206040518083038186803b15801561339657600080fd5b505afa1580156133aa573d6000803e3d6000fd5b505050506040513d60208110156133c057600080fd5b50515b156133d45760019350505050612347565b506000949350505050565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600354604080517f13af403500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152915191909216916313af403591602480830192600092919082900301818387803b15801561346f57600080fd5b505af1158015613483573d6000803e3d6000fd5b50505050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341c0e1b56040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156134f157600080fd5b505af1158015613505573d6000803e3d6000fd5b5050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1661352d613ae4565b73ffffffffffffffffffffffffffffffffffffffff16141561354d575060005b803414612acf57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600b60248201527f496e76616c696420666565000000000000000000000000000000000000000000604482015290519081900360640190fd5b600254600454600091829160609173ffffffffffffffffffffffffffffffffffffffff908116917f3e68680a00000000000000000000000000000000000000000000000000000000911661360d613ae4565b6040805173ffffffffffffffffffffffffffffffffffffffff93841660248201529190921660448083019190915282518083039091018152606490910182526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317835290518151919290918291908083835b602083106136e657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016136a9565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114613746576040519150601f19603f3d011682016040523d82523d6000602084013e61374b565b606091505b50915091508181906137f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156137ba5781810151838201526020016137a2565b50505050905090810190601f1680156137e75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5080806020019051602081101561380b57600080fd5b50519250505090565b600354604080517f323ab40900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301529151919092169160009182918291859163323ab409916024808301926080929190829003018186803b15801561389057600080fd5b505afa1580156138a4573d6000803e3d6000fd5b505050506040513d60808110156138ba57600080fd5b5080516020820151604090920151909450909250905073ffffffffffffffffffffffffffffffffffffffff831615613505578273ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561393457600080fd5b505af1158015613948573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff8216156139c9578173ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156139b057600080fd5b505af11580156139c4573d6000803e3d6000fd5b505050505b73ffffffffffffffffffffffffffffffffffffffff811615613a46578073ffffffffffffffffffffffffffffffffffffffff166383197ef06040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613a2d57600080fd5b505af1158015613a41573d6000803e3d6000fd5b505050505b8373ffffffffffffffffffffffffffffffffffffffff166329092d0e866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015613ac557600080fd5b505af1158015613ad9573d6000803e3d6000fd5b505050505050505050565b6000805473ffffffffffffffffffffffffffffffffffffffff16331415613b0c575032612a41565b5033612a4156fea265627a7a72315820342547331d8cc02c483a22f276d79979d91310ecd1c073c9da01b8fec4beb7d864736f6c63430005100032`
    51  
    52  // BlacklistRegistryV1 is an auto generated Go binding around an Ethereum contract.
    53  type BlacklistRegistryV1 struct {
    54  	BlacklistRegistryV1Caller     // Read-only binding to the contract
    55  	BlacklistRegistryV1Transactor // Write-only binding to the contract
    56  	BlacklistRegistryV1Filterer   // Log filterer for contract events
    57  }
    58  
    59  // BlacklistRegistryV1Caller is an auto generated read-only Go binding around an Ethereum contract.
    60  type BlacklistRegistryV1Caller struct {
    61  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    62  }
    63  
    64  // BlacklistRegistryV1Transactor is an auto generated write-only Go binding around an Ethereum contract.
    65  type BlacklistRegistryV1Transactor struct {
    66  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    67  }
    68  
    69  // BlacklistRegistryV1Filterer is an auto generated log filtering Go binding around an Ethereum contract events.
    70  type BlacklistRegistryV1Filterer struct {
    71  	contract *bind.BoundContract // Generic contract wrapper for the low level calls
    72  }
    73  
    74  // BlacklistRegistryV1Session is an auto generated Go binding around an Ethereum contract,
    75  // with pre-set call and transact options.
    76  type BlacklistRegistryV1Session struct {
    77  	Contract     *BlacklistRegistryV1 // Generic contract binding to set the session for
    78  	CallOpts     bind.CallOpts        // Call options to use throughout this session
    79  	TransactOpts bind.TransactOpts    // Transaction auth options to use throughout this session
    80  }
    81  
    82  // BlacklistRegistryV1CallerSession is an auto generated read-only Go binding around an Ethereum contract,
    83  // with pre-set call options.
    84  type BlacklistRegistryV1CallerSession struct {
    85  	Contract *BlacklistRegistryV1Caller // Generic contract caller binding to set the session for
    86  	CallOpts bind.CallOpts              // Call options to use throughout this session
    87  }
    88  
    89  // BlacklistRegistryV1TransactorSession is an auto generated write-only Go binding around an Ethereum contract,
    90  // with pre-set transact options.
    91  type BlacklistRegistryV1TransactorSession struct {
    92  	Contract     *BlacklistRegistryV1Transactor // Generic contract transactor binding to set the session for
    93  	TransactOpts bind.TransactOpts              // Transaction auth options to use throughout this session
    94  }
    95  
    96  // BlacklistRegistryV1Raw is an auto generated low-level Go binding around an Ethereum contract.
    97  type BlacklistRegistryV1Raw struct {
    98  	Contract *BlacklistRegistryV1 // Generic contract binding to access the raw methods on
    99  }
   100  
   101  // BlacklistRegistryV1CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract.
   102  type BlacklistRegistryV1CallerRaw struct {
   103  	Contract *BlacklistRegistryV1Caller // Generic read-only contract binding to access the raw methods on
   104  }
   105  
   106  // BlacklistRegistryV1TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract.
   107  type BlacklistRegistryV1TransactorRaw struct {
   108  	Contract *BlacklistRegistryV1Transactor // Generic write-only contract binding to access the raw methods on
   109  }
   110  
   111  // NewBlacklistRegistryV1 creates a new instance of BlacklistRegistryV1, bound to a specific deployed contract.
   112  func NewBlacklistRegistryV1(address common.Address, backend bind.ContractBackend) (*BlacklistRegistryV1, error) {
   113  	contract, err := bindBlacklistRegistryV1(address, backend, backend, backend)
   114  	if err != nil {
   115  		return nil, err
   116  	}
   117  	return &BlacklistRegistryV1{BlacklistRegistryV1Caller: BlacklistRegistryV1Caller{contract: contract}, BlacklistRegistryV1Transactor: BlacklistRegistryV1Transactor{contract: contract}, BlacklistRegistryV1Filterer: BlacklistRegistryV1Filterer{contract: contract}}, nil
   118  }
   119  
   120  // NewBlacklistRegistryV1Caller creates a new read-only instance of BlacklistRegistryV1, bound to a specific deployed contract.
   121  func NewBlacklistRegistryV1Caller(address common.Address, caller bind.ContractCaller) (*BlacklistRegistryV1Caller, error) {
   122  	contract, err := bindBlacklistRegistryV1(address, caller, nil, nil)
   123  	if err != nil {
   124  		return nil, err
   125  	}
   126  	return &BlacklistRegistryV1Caller{contract: contract}, nil
   127  }
   128  
   129  // NewBlacklistRegistryV1Transactor creates a new write-only instance of BlacklistRegistryV1, bound to a specific deployed contract.
   130  func NewBlacklistRegistryV1Transactor(address common.Address, transactor bind.ContractTransactor) (*BlacklistRegistryV1Transactor, error) {
   131  	contract, err := bindBlacklistRegistryV1(address, nil, transactor, nil)
   132  	if err != nil {
   133  		return nil, err
   134  	}
   135  	return &BlacklistRegistryV1Transactor{contract: contract}, nil
   136  }
   137  
   138  // NewBlacklistRegistryV1Filterer creates a new log filterer instance of BlacklistRegistryV1, bound to a specific deployed contract.
   139  func NewBlacklistRegistryV1Filterer(address common.Address, filterer bind.ContractFilterer) (*BlacklistRegistryV1Filterer, error) {
   140  	contract, err := bindBlacklistRegistryV1(address, nil, nil, filterer)
   141  	if err != nil {
   142  		return nil, err
   143  	}
   144  	return &BlacklistRegistryV1Filterer{contract: contract}, nil
   145  }
   146  
   147  // bindBlacklistRegistryV1 binds a generic wrapper to an already deployed contract.
   148  func bindBlacklistRegistryV1(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) {
   149  	parsed, err := abi.JSON(strings.NewReader(BlacklistRegistryV1ABI))
   150  	if err != nil {
   151  		return nil, err
   152  	}
   153  	return bind.NewBoundContract(address, parsed, caller, transactor, filterer), nil
   154  }
   155  
   156  // Call invokes the (constant) contract method with params as input values and
   157  // sets the output to result. The result type might be a single field for simple
   158  // returns, a slice of interfaces for anonymous returns and a struct for named
   159  // returns.
   160  func (_BlacklistRegistryV1 *BlacklistRegistryV1Raw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   161  	return _BlacklistRegistryV1.Contract.BlacklistRegistryV1Caller.contract.Call(opts, result, method, params...)
   162  }
   163  
   164  // Transfer initiates a plain transaction to move funds to the contract, calling
   165  // its default method if one is available.
   166  func (_BlacklistRegistryV1 *BlacklistRegistryV1Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   167  	return _BlacklistRegistryV1.Contract.BlacklistRegistryV1Transactor.contract.Transfer(opts)
   168  }
   169  
   170  // Transact invokes the (paid) contract method with params as input values.
   171  func (_BlacklistRegistryV1 *BlacklistRegistryV1Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   172  	return _BlacklistRegistryV1.Contract.BlacklistRegistryV1Transactor.contract.Transact(opts, method, params...)
   173  }
   174  
   175  // Call invokes the (constant) contract method with params as input values and
   176  // sets the output to result. The result type might be a single field for simple
   177  // returns, a slice of interfaces for anonymous returns and a struct for named
   178  // returns.
   179  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerRaw) Call(opts *bind.CallOpts, result interface{}, method string, params ...interface{}) error {
   180  	return _BlacklistRegistryV1.Contract.contract.Call(opts, result, method, params...)
   181  }
   182  
   183  // Transfer initiates a plain transaction to move funds to the contract, calling
   184  // its default method if one is available.
   185  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) {
   186  	return _BlacklistRegistryV1.Contract.contract.Transfer(opts)
   187  }
   188  
   189  // Transact invokes the (paid) contract method with params as input values.
   190  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) {
   191  	return _BlacklistRegistryV1.Contract.contract.Transact(opts, method, params...)
   192  }
   193  
   194  // EBISigner is a free data retrieval call binding the contract method 0x94c210fc.
   195  //
   196  // Solidity: function EBI_signer() constant returns(address)
   197  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) EBISigner(opts *bind.CallOpts) (common.Address, error) {
   198  	var (
   199  		ret0 = new(common.Address)
   200  	)
   201  	out := ret0
   202  	err := _BlacklistRegistryV1.contract.Call(opts, out, "EBI_signer")
   203  	return *ret0, err
   204  }
   205  
   206  // EBISigner is a free data retrieval call binding the contract method 0x94c210fc.
   207  //
   208  // Solidity: function EBI_signer() constant returns(address)
   209  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) EBISigner() (common.Address, error) {
   210  	return _BlacklistRegistryV1.Contract.EBISigner(&_BlacklistRegistryV1.CallOpts)
   211  }
   212  
   213  // EBISigner is a free data retrieval call binding the contract method 0x94c210fc.
   214  //
   215  // Solidity: function EBI_signer() constant returns(address)
   216  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) EBISigner() (common.Address, error) {
   217  	return _BlacklistRegistryV1.Contract.EBISigner(&_BlacklistRegistryV1.CallOpts)
   218  }
   219  
   220  // CompensationFund is a free data retrieval call binding the contract method 0xf4441152.
   221  //
   222  // Solidity: function compensation_fund() constant returns(address)
   223  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) CompensationFund(opts *bind.CallOpts) (common.Address, error) {
   224  	var (
   225  		ret0 = new(common.Address)
   226  	)
   227  	out := ret0
   228  	err := _BlacklistRegistryV1.contract.Call(opts, out, "compensation_fund")
   229  	return *ret0, err
   230  }
   231  
   232  // CompensationFund is a free data retrieval call binding the contract method 0xf4441152.
   233  //
   234  // Solidity: function compensation_fund() constant returns(address)
   235  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) CompensationFund() (common.Address, error) {
   236  	return _BlacklistRegistryV1.Contract.CompensationFund(&_BlacklistRegistryV1.CallOpts)
   237  }
   238  
   239  // CompensationFund is a free data retrieval call binding the contract method 0xf4441152.
   240  //
   241  // Solidity: function compensation_fund() constant returns(address)
   242  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) CompensationFund() (common.Address, error) {
   243  	return _BlacklistRegistryV1.Contract.CompensationFund(&_BlacklistRegistryV1.CallOpts)
   244  }
   245  
   246  // EnumerateAll is a free data retrieval call binding the contract method 0xbc393afb.
   247  //
   248  // Solidity: function enumerateAll() constant returns(address[] addresses)
   249  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) EnumerateAll(opts *bind.CallOpts) ([]common.Address, error) {
   250  	var (
   251  		ret0 = new([]common.Address)
   252  	)
   253  	out := ret0
   254  	err := _BlacklistRegistryV1.contract.Call(opts, out, "enumerateAll")
   255  	return *ret0, err
   256  }
   257  
   258  // EnumerateAll is a free data retrieval call binding the contract method 0xbc393afb.
   259  //
   260  // Solidity: function enumerateAll() constant returns(address[] addresses)
   261  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) EnumerateAll() ([]common.Address, error) {
   262  	return _BlacklistRegistryV1.Contract.EnumerateAll(&_BlacklistRegistryV1.CallOpts)
   263  }
   264  
   265  // EnumerateAll is a free data retrieval call binding the contract method 0xbc393afb.
   266  //
   267  // Solidity: function enumerateAll() constant returns(address[] addresses)
   268  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) EnumerateAll() ([]common.Address, error) {
   269  	return _BlacklistRegistryV1.Contract.EnumerateAll(&_BlacklistRegistryV1.CallOpts)
   270  }
   271  
   272  // EnumerateBlocked is a free data retrieval call binding the contract method 0x5603125c.
   273  //
   274  // Solidity: function enumerateBlocked() constant returns(address[] addresses)
   275  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) EnumerateBlocked(opts *bind.CallOpts) ([]common.Address, error) {
   276  	var (
   277  		ret0 = new([]common.Address)
   278  	)
   279  	out := ret0
   280  	err := _BlacklistRegistryV1.contract.Call(opts, out, "enumerateBlocked")
   281  	return *ret0, err
   282  }
   283  
   284  // EnumerateBlocked is a free data retrieval call binding the contract method 0x5603125c.
   285  //
   286  // Solidity: function enumerateBlocked() constant returns(address[] addresses)
   287  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) EnumerateBlocked() ([]common.Address, error) {
   288  	return _BlacklistRegistryV1.Contract.EnumerateBlocked(&_BlacklistRegistryV1.CallOpts)
   289  }
   290  
   291  // EnumerateBlocked is a free data retrieval call binding the contract method 0x5603125c.
   292  //
   293  // Solidity: function enumerateBlocked() constant returns(address[] addresses)
   294  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) EnumerateBlocked() ([]common.Address, error) {
   295  	return _BlacklistRegistryV1.Contract.EnumerateBlocked(&_BlacklistRegistryV1.CallOpts)
   296  }
   297  
   298  // EnumerateDrainable is a free data retrieval call binding the contract method 0xee33f9d2.
   299  //
   300  // Solidity: function enumerateDrainable() constant returns(address[] addresses)
   301  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) EnumerateDrainable(opts *bind.CallOpts) ([]common.Address, error) {
   302  	var (
   303  		ret0 = new([]common.Address)
   304  	)
   305  	out := ret0
   306  	err := _BlacklistRegistryV1.contract.Call(opts, out, "enumerateDrainable")
   307  	return *ret0, err
   308  }
   309  
   310  // EnumerateDrainable is a free data retrieval call binding the contract method 0xee33f9d2.
   311  //
   312  // Solidity: function enumerateDrainable() constant returns(address[] addresses)
   313  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) EnumerateDrainable() ([]common.Address, error) {
   314  	return _BlacklistRegistryV1.Contract.EnumerateDrainable(&_BlacklistRegistryV1.CallOpts)
   315  }
   316  
   317  // EnumerateDrainable is a free data retrieval call binding the contract method 0xee33f9d2.
   318  //
   319  // Solidity: function enumerateDrainable() constant returns(address[] addresses)
   320  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) EnumerateDrainable() ([]common.Address, error) {
   321  	return _BlacklistRegistryV1.Contract.EnumerateDrainable(&_BlacklistRegistryV1.CallOpts)
   322  }
   323  
   324  // IsBlacklisted is a free data retrieval call binding the contract method 0xfe575a87.
   325  //
   326  // Solidity: function isBlacklisted(address addr) constant returns(bool)
   327  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) IsBlacklisted(opts *bind.CallOpts, addr common.Address) (bool, error) {
   328  	var (
   329  		ret0 = new(bool)
   330  	)
   331  	out := ret0
   332  	err := _BlacklistRegistryV1.contract.Call(opts, out, "isBlacklisted", addr)
   333  	return *ret0, err
   334  }
   335  
   336  // IsBlacklisted is a free data retrieval call binding the contract method 0xfe575a87.
   337  //
   338  // Solidity: function isBlacklisted(address addr) constant returns(bool)
   339  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) IsBlacklisted(addr common.Address) (bool, error) {
   340  	return _BlacklistRegistryV1.Contract.IsBlacklisted(&_BlacklistRegistryV1.CallOpts, addr)
   341  }
   342  
   343  // IsBlacklisted is a free data retrieval call binding the contract method 0xfe575a87.
   344  //
   345  // Solidity: function isBlacklisted(address addr) constant returns(bool)
   346  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) IsBlacklisted(addr common.Address) (bool, error) {
   347  	return _BlacklistRegistryV1.Contract.IsBlacklisted(&_BlacklistRegistryV1.CallOpts, addr)
   348  }
   349  
   350  // IsDrainable is a free data retrieval call binding the contract method 0x3303bbb1.
   351  //
   352  // Solidity: function isDrainable(address addr) constant returns(bool)
   353  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) IsDrainable(opts *bind.CallOpts, addr common.Address) (bool, error) {
   354  	var (
   355  		ret0 = new(bool)
   356  	)
   357  	out := ret0
   358  	err := _BlacklistRegistryV1.contract.Call(opts, out, "isDrainable", addr)
   359  	return *ret0, err
   360  }
   361  
   362  // IsDrainable is a free data retrieval call binding the contract method 0x3303bbb1.
   363  //
   364  // Solidity: function isDrainable(address addr) constant returns(bool)
   365  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) IsDrainable(addr common.Address) (bool, error) {
   366  	return _BlacklistRegistryV1.Contract.IsDrainable(&_BlacklistRegistryV1.CallOpts, addr)
   367  }
   368  
   369  // IsDrainable is a free data retrieval call binding the contract method 0x3303bbb1.
   370  //
   371  // Solidity: function isDrainable(address addr) constant returns(bool)
   372  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) IsDrainable(addr common.Address) (bool, error) {
   373  	return _BlacklistRegistryV1.Contract.IsDrainable(&_BlacklistRegistryV1.CallOpts, addr)
   374  }
   375  
   376  // Migration is a free data retrieval call binding the contract method 0x1705a3bd.
   377  //
   378  // Solidity: function migration() constant returns(address)
   379  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) Migration(opts *bind.CallOpts) (common.Address, error) {
   380  	var (
   381  		ret0 = new(common.Address)
   382  	)
   383  	out := ret0
   384  	err := _BlacklistRegistryV1.contract.Call(opts, out, "migration")
   385  	return *ret0, err
   386  }
   387  
   388  // Migration is a free data retrieval call binding the contract method 0x1705a3bd.
   389  //
   390  // Solidity: function migration() constant returns(address)
   391  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) Migration() (common.Address, error) {
   392  	return _BlacklistRegistryV1.Contract.Migration(&_BlacklistRegistryV1.CallOpts)
   393  }
   394  
   395  // Migration is a free data retrieval call binding the contract method 0x1705a3bd.
   396  //
   397  // Solidity: function migration() constant returns(address)
   398  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) Migration() (common.Address, error) {
   399  	return _BlacklistRegistryV1.Contract.Migration(&_BlacklistRegistryV1.CallOpts)
   400  }
   401  
   402  // MnregistryProxy is a free data retrieval call binding the contract method 0xfe7334e8.
   403  //
   404  // Solidity: function mnregistry_proxy() constant returns(address)
   405  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) MnregistryProxy(opts *bind.CallOpts) (common.Address, error) {
   406  	var (
   407  		ret0 = new(common.Address)
   408  	)
   409  	out := ret0
   410  	err := _BlacklistRegistryV1.contract.Call(opts, out, "mnregistry_proxy")
   411  	return *ret0, err
   412  }
   413  
   414  // MnregistryProxy is a free data retrieval call binding the contract method 0xfe7334e8.
   415  //
   416  // Solidity: function mnregistry_proxy() constant returns(address)
   417  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) MnregistryProxy() (common.Address, error) {
   418  	return _BlacklistRegistryV1.Contract.MnregistryProxy(&_BlacklistRegistryV1.CallOpts)
   419  }
   420  
   421  // MnregistryProxy is a free data retrieval call binding the contract method 0xfe7334e8.
   422  //
   423  // Solidity: function mnregistry_proxy() constant returns(address)
   424  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) MnregistryProxy() (common.Address, error) {
   425  	return _BlacklistRegistryV1.Contract.MnregistryProxy(&_BlacklistRegistryV1.CallOpts)
   426  }
   427  
   428  // ProposalCreator is a free data retrieval call binding the contract method 0x8ad4012f.
   429  //
   430  // Solidity: function proposal_creator() constant returns(address)
   431  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) ProposalCreator(opts *bind.CallOpts) (common.Address, error) {
   432  	var (
   433  		ret0 = new(common.Address)
   434  	)
   435  	out := ret0
   436  	err := _BlacklistRegistryV1.contract.Call(opts, out, "proposal_creator")
   437  	return *ret0, err
   438  }
   439  
   440  // ProposalCreator is a free data retrieval call binding the contract method 0x8ad4012f.
   441  //
   442  // Solidity: function proposal_creator() constant returns(address)
   443  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) ProposalCreator() (common.Address, error) {
   444  	return _BlacklistRegistryV1.Contract.ProposalCreator(&_BlacklistRegistryV1.CallOpts)
   445  }
   446  
   447  // ProposalCreator is a free data retrieval call binding the contract method 0x8ad4012f.
   448  //
   449  // Solidity: function proposal_creator() constant returns(address)
   450  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) ProposalCreator() (common.Address, error) {
   451  	return _BlacklistRegistryV1.Contract.ProposalCreator(&_BlacklistRegistryV1.CallOpts)
   452  }
   453  
   454  // Proposals is a free data retrieval call binding the contract method 0x3341b445.
   455  //
   456  // Solidity: function proposals(address addr) constant returns(address enforce, address revoke, address drain)
   457  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) Proposals(opts *bind.CallOpts, addr common.Address) (struct {
   458  	Enforce common.Address
   459  	Revoke  common.Address
   460  	Drain   common.Address
   461  }, error) {
   462  	ret := new(struct {
   463  		Enforce common.Address
   464  		Revoke  common.Address
   465  		Drain   common.Address
   466  	})
   467  	out := ret
   468  	err := _BlacklistRegistryV1.contract.Call(opts, out, "proposals", addr)
   469  	return *ret, err
   470  }
   471  
   472  // Proposals is a free data retrieval call binding the contract method 0x3341b445.
   473  //
   474  // Solidity: function proposals(address addr) constant returns(address enforce, address revoke, address drain)
   475  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) Proposals(addr common.Address) (struct {
   476  	Enforce common.Address
   477  	Revoke  common.Address
   478  	Drain   common.Address
   479  }, error) {
   480  	return _BlacklistRegistryV1.Contract.Proposals(&_BlacklistRegistryV1.CallOpts, addr)
   481  }
   482  
   483  // Proposals is a free data retrieval call binding the contract method 0x3341b445.
   484  //
   485  // Solidity: function proposals(address addr) constant returns(address enforce, address revoke, address drain)
   486  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) Proposals(addr common.Address) (struct {
   487  	Enforce common.Address
   488  	Revoke  common.Address
   489  	Drain   common.Address
   490  }, error) {
   491  	return _BlacklistRegistryV1.Contract.Proposals(&_BlacklistRegistryV1.CallOpts, addr)
   492  }
   493  
   494  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   495  //
   496  // Solidity: function proxy() constant returns(address)
   497  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) Proxy(opts *bind.CallOpts) (common.Address, error) {
   498  	var (
   499  		ret0 = new(common.Address)
   500  	)
   501  	out := ret0
   502  	err := _BlacklistRegistryV1.contract.Call(opts, out, "proxy")
   503  	return *ret0, err
   504  }
   505  
   506  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   507  //
   508  // Solidity: function proxy() constant returns(address)
   509  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) Proxy() (common.Address, error) {
   510  	return _BlacklistRegistryV1.Contract.Proxy(&_BlacklistRegistryV1.CallOpts)
   511  }
   512  
   513  // Proxy is a free data retrieval call binding the contract method 0xec556889.
   514  //
   515  // Solidity: function proxy() constant returns(address)
   516  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) Proxy() (common.Address, error) {
   517  	return _BlacklistRegistryV1.Contract.Proxy(&_BlacklistRegistryV1.CallOpts)
   518  }
   519  
   520  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
   521  //
   522  // Solidity: function v1storage() constant returns(address)
   523  func (_BlacklistRegistryV1 *BlacklistRegistryV1Caller) V1storage(opts *bind.CallOpts) (common.Address, error) {
   524  	var (
   525  		ret0 = new(common.Address)
   526  	)
   527  	out := ret0
   528  	err := _BlacklistRegistryV1.contract.Call(opts, out, "v1storage")
   529  	return *ret0, err
   530  }
   531  
   532  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
   533  //
   534  // Solidity: function v1storage() constant returns(address)
   535  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) V1storage() (common.Address, error) {
   536  	return _BlacklistRegistryV1.Contract.V1storage(&_BlacklistRegistryV1.CallOpts)
   537  }
   538  
   539  // V1storage is a free data retrieval call binding the contract method 0x2d059305.
   540  //
   541  // Solidity: function v1storage() constant returns(address)
   542  func (_BlacklistRegistryV1 *BlacklistRegistryV1CallerSession) V1storage() (common.Address, error) {
   543  	return _BlacklistRegistryV1.Contract.V1storage(&_BlacklistRegistryV1.CallOpts)
   544  }
   545  
   546  // Collect is a paid mutator transaction binding the contract method 0x06ec16f8.
   547  //
   548  // Solidity: function collect(address addr) returns()
   549  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) Collect(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) {
   550  	return _BlacklistRegistryV1.contract.Transact(opts, "collect", addr)
   551  }
   552  
   553  // Collect is a paid mutator transaction binding the contract method 0x06ec16f8.
   554  //
   555  // Solidity: function collect(address addr) returns()
   556  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) Collect(addr common.Address) (*types.Transaction, error) {
   557  	return _BlacklistRegistryV1.Contract.Collect(&_BlacklistRegistryV1.TransactOpts, addr)
   558  }
   559  
   560  // Collect is a paid mutator transaction binding the contract method 0x06ec16f8.
   561  //
   562  // Solidity: function collect(address addr) returns()
   563  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) Collect(addr common.Address) (*types.Transaction, error) {
   564  	return _BlacklistRegistryV1.Contract.Collect(&_BlacklistRegistryV1.TransactOpts, addr)
   565  }
   566  
   567  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
   568  //
   569  // Solidity: function destroy(address _newImpl) returns()
   570  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) Destroy(opts *bind.TransactOpts, _newImpl common.Address) (*types.Transaction, error) {
   571  	return _BlacklistRegistryV1.contract.Transact(opts, "destroy", _newImpl)
   572  }
   573  
   574  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
   575  //
   576  // Solidity: function destroy(address _newImpl) returns()
   577  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) Destroy(_newImpl common.Address) (*types.Transaction, error) {
   578  	return _BlacklistRegistryV1.Contract.Destroy(&_BlacklistRegistryV1.TransactOpts, _newImpl)
   579  }
   580  
   581  // Destroy is a paid mutator transaction binding the contract method 0x00f55d9d.
   582  //
   583  // Solidity: function destroy(address _newImpl) returns()
   584  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) Destroy(_newImpl common.Address) (*types.Transaction, error) {
   585  	return _BlacklistRegistryV1.Contract.Destroy(&_BlacklistRegistryV1.TransactOpts, _newImpl)
   586  }
   587  
   588  // DrainMigration is a paid mutator transaction binding the contract method 0x3502a130.
   589  //
   590  // Solidity: function drainMigration(uint256 item_id, bytes20 owner) returns()
   591  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) DrainMigration(opts *bind.TransactOpts, item_id *big.Int, owner [20]byte) (*types.Transaction, error) {
   592  	return _BlacklistRegistryV1.contract.Transact(opts, "drainMigration", item_id, owner)
   593  }
   594  
   595  // DrainMigration is a paid mutator transaction binding the contract method 0x3502a130.
   596  //
   597  // Solidity: function drainMigration(uint256 item_id, bytes20 owner) returns()
   598  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) DrainMigration(item_id *big.Int, owner [20]byte) (*types.Transaction, error) {
   599  	return _BlacklistRegistryV1.Contract.DrainMigration(&_BlacklistRegistryV1.TransactOpts, item_id, owner)
   600  }
   601  
   602  // DrainMigration is a paid mutator transaction binding the contract method 0x3502a130.
   603  //
   604  // Solidity: function drainMigration(uint256 item_id, bytes20 owner) returns()
   605  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) DrainMigration(item_id *big.Int, owner [20]byte) (*types.Transaction, error) {
   606  	return _BlacklistRegistryV1.Contract.DrainMigration(&_BlacklistRegistryV1.TransactOpts, item_id, owner)
   607  }
   608  
   609  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
   610  //
   611  // Solidity: function migrate(address _oldImpl) returns()
   612  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) Migrate(opts *bind.TransactOpts, _oldImpl common.Address) (*types.Transaction, error) {
   613  	return _BlacklistRegistryV1.contract.Transact(opts, "migrate", _oldImpl)
   614  }
   615  
   616  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
   617  //
   618  // Solidity: function migrate(address _oldImpl) returns()
   619  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) Migrate(_oldImpl common.Address) (*types.Transaction, error) {
   620  	return _BlacklistRegistryV1.Contract.Migrate(&_BlacklistRegistryV1.TransactOpts, _oldImpl)
   621  }
   622  
   623  // Migrate is a paid mutator transaction binding the contract method 0xce5494bb.
   624  //
   625  // Solidity: function migrate(address _oldImpl) returns()
   626  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) Migrate(_oldImpl common.Address) (*types.Transaction, error) {
   627  	return _BlacklistRegistryV1.Contract.Migrate(&_BlacklistRegistryV1.TransactOpts, _oldImpl)
   628  }
   629  
   630  // OnDrain is a paid mutator transaction binding the contract method 0x79d7bc07.
   631  //
   632  // Solidity: function onDrain(address addr) returns()
   633  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) OnDrain(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) {
   634  	return _BlacklistRegistryV1.contract.Transact(opts, "onDrain", addr)
   635  }
   636  
   637  // OnDrain is a paid mutator transaction binding the contract method 0x79d7bc07.
   638  //
   639  // Solidity: function onDrain(address addr) returns()
   640  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) OnDrain(addr common.Address) (*types.Transaction, error) {
   641  	return _BlacklistRegistryV1.Contract.OnDrain(&_BlacklistRegistryV1.TransactOpts, addr)
   642  }
   643  
   644  // OnDrain is a paid mutator transaction binding the contract method 0x79d7bc07.
   645  //
   646  // Solidity: function onDrain(address addr) returns()
   647  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) OnDrain(addr common.Address) (*types.Transaction, error) {
   648  	return _BlacklistRegistryV1.Contract.OnDrain(&_BlacklistRegistryV1.TransactOpts, addr)
   649  }
   650  
   651  // Propose is a paid mutator transaction binding the contract method 0x01267951.
   652  //
   653  // Solidity: function propose(address addr) returns(address)
   654  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) Propose(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) {
   655  	return _BlacklistRegistryV1.contract.Transact(opts, "propose", addr)
   656  }
   657  
   658  // Propose is a paid mutator transaction binding the contract method 0x01267951.
   659  //
   660  // Solidity: function propose(address addr) returns(address)
   661  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) Propose(addr common.Address) (*types.Transaction, error) {
   662  	return _BlacklistRegistryV1.Contract.Propose(&_BlacklistRegistryV1.TransactOpts, addr)
   663  }
   664  
   665  // Propose is a paid mutator transaction binding the contract method 0x01267951.
   666  //
   667  // Solidity: function propose(address addr) returns(address)
   668  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) Propose(addr common.Address) (*types.Transaction, error) {
   669  	return _BlacklistRegistryV1.Contract.Propose(&_BlacklistRegistryV1.TransactOpts, addr)
   670  }
   671  
   672  // ProposeDrain is a paid mutator transaction binding the contract method 0xd1e8ebda.
   673  //
   674  // Solidity: function proposeDrain(address addr) returns(address)
   675  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) ProposeDrain(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) {
   676  	return _BlacklistRegistryV1.contract.Transact(opts, "proposeDrain", addr)
   677  }
   678  
   679  // ProposeDrain is a paid mutator transaction binding the contract method 0xd1e8ebda.
   680  //
   681  // Solidity: function proposeDrain(address addr) returns(address)
   682  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) ProposeDrain(addr common.Address) (*types.Transaction, error) {
   683  	return _BlacklistRegistryV1.Contract.ProposeDrain(&_BlacklistRegistryV1.TransactOpts, addr)
   684  }
   685  
   686  // ProposeDrain is a paid mutator transaction binding the contract method 0xd1e8ebda.
   687  //
   688  // Solidity: function proposeDrain(address addr) returns(address)
   689  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) ProposeDrain(addr common.Address) (*types.Transaction, error) {
   690  	return _BlacklistRegistryV1.Contract.ProposeDrain(&_BlacklistRegistryV1.TransactOpts, addr)
   691  }
   692  
   693  // ProposeRevoke is a paid mutator transaction binding the contract method 0x244fcea5.
   694  //
   695  // Solidity: function proposeRevoke(address addr) returns(address)
   696  func (_BlacklistRegistryV1 *BlacklistRegistryV1Transactor) ProposeRevoke(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) {
   697  	return _BlacklistRegistryV1.contract.Transact(opts, "proposeRevoke", addr)
   698  }
   699  
   700  // ProposeRevoke is a paid mutator transaction binding the contract method 0x244fcea5.
   701  //
   702  // Solidity: function proposeRevoke(address addr) returns(address)
   703  func (_BlacklistRegistryV1 *BlacklistRegistryV1Session) ProposeRevoke(addr common.Address) (*types.Transaction, error) {
   704  	return _BlacklistRegistryV1.Contract.ProposeRevoke(&_BlacklistRegistryV1.TransactOpts, addr)
   705  }
   706  
   707  // ProposeRevoke is a paid mutator transaction binding the contract method 0x244fcea5.
   708  //
   709  // Solidity: function proposeRevoke(address addr) returns(address)
   710  func (_BlacklistRegistryV1 *BlacklistRegistryV1TransactorSession) ProposeRevoke(addr common.Address) (*types.Transaction, error) {
   711  	return _BlacklistRegistryV1.Contract.ProposeRevoke(&_BlacklistRegistryV1.TransactOpts, addr)
   712  }
   713  
   714  // BlacklistRegistryV1BlacklistProposalIterator is returned from FilterBlacklistProposal and is used to iterate over the raw logs and unpacked data for BlacklistProposal events raised by the BlacklistRegistryV1 contract.
   715  type BlacklistRegistryV1BlacklistProposalIterator struct {
   716  	Event *BlacklistRegistryV1BlacklistProposal // Event containing the contract specifics and raw log
   717  
   718  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   719  	event    string              // Event name to use for unpacking event data
   720  
   721  	logs chan types.Log        // Log channel receiving the found contract events
   722  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   723  	done bool                  // Whether the subscription completed delivering logs
   724  	fail error                 // Occurred error to stop iteration
   725  }
   726  
   727  // Next advances the iterator to the subsequent event, returning whether there
   728  // are any more events found. In case of a retrieval or parsing error, false is
   729  // returned and Error() can be queried for the exact failure.
   730  func (it *BlacklistRegistryV1BlacklistProposalIterator) Next() bool {
   731  	// If the iterator failed, stop iterating
   732  	if it.fail != nil {
   733  		return false
   734  	}
   735  	// If the iterator completed, deliver directly whatever's available
   736  	if it.done {
   737  		select {
   738  		case log := <-it.logs:
   739  			it.Event = new(BlacklistRegistryV1BlacklistProposal)
   740  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   741  				it.fail = err
   742  				return false
   743  			}
   744  			it.Event.Raw = log
   745  			return true
   746  
   747  		default:
   748  			return false
   749  		}
   750  	}
   751  	// Iterator still in progress, wait for either a data or an error event
   752  	select {
   753  	case log := <-it.logs:
   754  		it.Event = new(BlacklistRegistryV1BlacklistProposal)
   755  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   756  			it.fail = err
   757  			return false
   758  		}
   759  		it.Event.Raw = log
   760  		return true
   761  
   762  	case err := <-it.sub.Err():
   763  		it.done = true
   764  		it.fail = err
   765  		return it.Next()
   766  	}
   767  }
   768  
   769  // Error returns any retrieval or parsing error occurred during filtering.
   770  func (it *BlacklistRegistryV1BlacklistProposalIterator) Error() error {
   771  	return it.fail
   772  }
   773  
   774  // Close terminates the iteration process, releasing any pending underlying
   775  // resources.
   776  func (it *BlacklistRegistryV1BlacklistProposalIterator) Close() error {
   777  	it.sub.Unsubscribe()
   778  	return nil
   779  }
   780  
   781  // BlacklistRegistryV1BlacklistProposal represents a BlacklistProposal event raised by the BlacklistRegistryV1 contract.
   782  type BlacklistRegistryV1BlacklistProposal struct {
   783  	Target   common.Address
   784  	Proposal common.Address
   785  	Raw      types.Log // Blockchain specific contextual infos
   786  }
   787  
   788  // FilterBlacklistProposal is a free log retrieval operation binding the contract event 0xea0d3b1afc7aa1754f902b277d6f473e2f4a4526e94797814c2042405d692557.
   789  //
   790  // Solidity: event BlacklistProposal(address indexed target, address proposal)
   791  func (_BlacklistRegistryV1 *BlacklistRegistryV1Filterer) FilterBlacklistProposal(opts *bind.FilterOpts, target []common.Address) (*BlacklistRegistryV1BlacklistProposalIterator, error) {
   792  
   793  	var targetRule []interface{}
   794  	for _, targetItem := range target {
   795  		targetRule = append(targetRule, targetItem)
   796  	}
   797  
   798  	logs, sub, err := _BlacklistRegistryV1.contract.FilterLogs(opts, "BlacklistProposal", targetRule)
   799  	if err != nil {
   800  		return nil, err
   801  	}
   802  	return &BlacklistRegistryV1BlacklistProposalIterator{contract: _BlacklistRegistryV1.contract, event: "BlacklistProposal", logs: logs, sub: sub}, nil
   803  }
   804  
   805  // WatchBlacklistProposal is a free log subscription operation binding the contract event 0xea0d3b1afc7aa1754f902b277d6f473e2f4a4526e94797814c2042405d692557.
   806  //
   807  // Solidity: event BlacklistProposal(address indexed target, address proposal)
   808  func (_BlacklistRegistryV1 *BlacklistRegistryV1Filterer) WatchBlacklistProposal(opts *bind.WatchOpts, sink chan<- *BlacklistRegistryV1BlacklistProposal, target []common.Address) (event.Subscription, error) {
   809  
   810  	var targetRule []interface{}
   811  	for _, targetItem := range target {
   812  		targetRule = append(targetRule, targetItem)
   813  	}
   814  
   815  	logs, sub, err := _BlacklistRegistryV1.contract.WatchLogs(opts, "BlacklistProposal", targetRule)
   816  	if err != nil {
   817  		return nil, err
   818  	}
   819  	return event.NewSubscription(func(quit <-chan struct{}) error {
   820  		defer sub.Unsubscribe()
   821  		for {
   822  			select {
   823  			case log := <-logs:
   824  				// New log arrived, parse the event and forward to the user
   825  				event := new(BlacklistRegistryV1BlacklistProposal)
   826  				if err := _BlacklistRegistryV1.contract.UnpackLog(event, "BlacklistProposal", log); err != nil {
   827  					return err
   828  				}
   829  				event.Raw = log
   830  
   831  				select {
   832  				case sink <- event:
   833  				case err := <-sub.Err():
   834  					return err
   835  				case <-quit:
   836  					return nil
   837  				}
   838  			case err := <-sub.Err():
   839  				return err
   840  			case <-quit:
   841  				return nil
   842  			}
   843  		}
   844  	}), nil
   845  }
   846  
   847  // BlacklistRegistryV1DrainProposalIterator is returned from FilterDrainProposal and is used to iterate over the raw logs and unpacked data for DrainProposal events raised by the BlacklistRegistryV1 contract.
   848  type BlacklistRegistryV1DrainProposalIterator struct {
   849  	Event *BlacklistRegistryV1DrainProposal // Event containing the contract specifics and raw log
   850  
   851  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   852  	event    string              // Event name to use for unpacking event data
   853  
   854  	logs chan types.Log        // Log channel receiving the found contract events
   855  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   856  	done bool                  // Whether the subscription completed delivering logs
   857  	fail error                 // Occurred error to stop iteration
   858  }
   859  
   860  // Next advances the iterator to the subsequent event, returning whether there
   861  // are any more events found. In case of a retrieval or parsing error, false is
   862  // returned and Error() can be queried for the exact failure.
   863  func (it *BlacklistRegistryV1DrainProposalIterator) Next() bool {
   864  	// If the iterator failed, stop iterating
   865  	if it.fail != nil {
   866  		return false
   867  	}
   868  	// If the iterator completed, deliver directly whatever's available
   869  	if it.done {
   870  		select {
   871  		case log := <-it.logs:
   872  			it.Event = new(BlacklistRegistryV1DrainProposal)
   873  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   874  				it.fail = err
   875  				return false
   876  			}
   877  			it.Event.Raw = log
   878  			return true
   879  
   880  		default:
   881  			return false
   882  		}
   883  	}
   884  	// Iterator still in progress, wait for either a data or an error event
   885  	select {
   886  	case log := <-it.logs:
   887  		it.Event = new(BlacklistRegistryV1DrainProposal)
   888  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
   889  			it.fail = err
   890  			return false
   891  		}
   892  		it.Event.Raw = log
   893  		return true
   894  
   895  	case err := <-it.sub.Err():
   896  		it.done = true
   897  		it.fail = err
   898  		return it.Next()
   899  	}
   900  }
   901  
   902  // Error returns any retrieval or parsing error occurred during filtering.
   903  func (it *BlacklistRegistryV1DrainProposalIterator) Error() error {
   904  	return it.fail
   905  }
   906  
   907  // Close terminates the iteration process, releasing any pending underlying
   908  // resources.
   909  func (it *BlacklistRegistryV1DrainProposalIterator) Close() error {
   910  	it.sub.Unsubscribe()
   911  	return nil
   912  }
   913  
   914  // BlacklistRegistryV1DrainProposal represents a DrainProposal event raised by the BlacklistRegistryV1 contract.
   915  type BlacklistRegistryV1DrainProposal struct {
   916  	Target   common.Address
   917  	Proposal common.Address
   918  	Raw      types.Log // Blockchain specific contextual infos
   919  }
   920  
   921  // FilterDrainProposal is a free log retrieval operation binding the contract event 0xb0163b33033bcea41a78d2d4a9c596c29b0667259543d6d56b8cac8cd92d2cea.
   922  //
   923  // Solidity: event DrainProposal(address indexed target, address proposal)
   924  func (_BlacklistRegistryV1 *BlacklistRegistryV1Filterer) FilterDrainProposal(opts *bind.FilterOpts, target []common.Address) (*BlacklistRegistryV1DrainProposalIterator, error) {
   925  
   926  	var targetRule []interface{}
   927  	for _, targetItem := range target {
   928  		targetRule = append(targetRule, targetItem)
   929  	}
   930  
   931  	logs, sub, err := _BlacklistRegistryV1.contract.FilterLogs(opts, "DrainProposal", targetRule)
   932  	if err != nil {
   933  		return nil, err
   934  	}
   935  	return &BlacklistRegistryV1DrainProposalIterator{contract: _BlacklistRegistryV1.contract, event: "DrainProposal", logs: logs, sub: sub}, nil
   936  }
   937  
   938  // WatchDrainProposal is a free log subscription operation binding the contract event 0xb0163b33033bcea41a78d2d4a9c596c29b0667259543d6d56b8cac8cd92d2cea.
   939  //
   940  // Solidity: event DrainProposal(address indexed target, address proposal)
   941  func (_BlacklistRegistryV1 *BlacklistRegistryV1Filterer) WatchDrainProposal(opts *bind.WatchOpts, sink chan<- *BlacklistRegistryV1DrainProposal, target []common.Address) (event.Subscription, error) {
   942  
   943  	var targetRule []interface{}
   944  	for _, targetItem := range target {
   945  		targetRule = append(targetRule, targetItem)
   946  	}
   947  
   948  	logs, sub, err := _BlacklistRegistryV1.contract.WatchLogs(opts, "DrainProposal", targetRule)
   949  	if err != nil {
   950  		return nil, err
   951  	}
   952  	return event.NewSubscription(func(quit <-chan struct{}) error {
   953  		defer sub.Unsubscribe()
   954  		for {
   955  			select {
   956  			case log := <-logs:
   957  				// New log arrived, parse the event and forward to the user
   958  				event := new(BlacklistRegistryV1DrainProposal)
   959  				if err := _BlacklistRegistryV1.contract.UnpackLog(event, "DrainProposal", log); err != nil {
   960  					return err
   961  				}
   962  				event.Raw = log
   963  
   964  				select {
   965  				case sink <- event:
   966  				case err := <-sub.Err():
   967  					return err
   968  				case <-quit:
   969  					return nil
   970  				}
   971  			case err := <-sub.Err():
   972  				return err
   973  			case <-quit:
   974  				return nil
   975  			}
   976  		}
   977  	}), nil
   978  }
   979  
   980  // BlacklistRegistryV1WhitelistProposalIterator is returned from FilterWhitelistProposal and is used to iterate over the raw logs and unpacked data for WhitelistProposal events raised by the BlacklistRegistryV1 contract.
   981  type BlacklistRegistryV1WhitelistProposalIterator struct {
   982  	Event *BlacklistRegistryV1WhitelistProposal // Event containing the contract specifics and raw log
   983  
   984  	contract *bind.BoundContract // Generic contract to use for unpacking event data
   985  	event    string              // Event name to use for unpacking event data
   986  
   987  	logs chan types.Log        // Log channel receiving the found contract events
   988  	sub  ethereum.Subscription // Subscription for errors, completion and termination
   989  	done bool                  // Whether the subscription completed delivering logs
   990  	fail error                 // Occurred error to stop iteration
   991  }
   992  
   993  // Next advances the iterator to the subsequent event, returning whether there
   994  // are any more events found. In case of a retrieval or parsing error, false is
   995  // returned and Error() can be queried for the exact failure.
   996  func (it *BlacklistRegistryV1WhitelistProposalIterator) Next() bool {
   997  	// If the iterator failed, stop iterating
   998  	if it.fail != nil {
   999  		return false
  1000  	}
  1001  	// If the iterator completed, deliver directly whatever's available
  1002  	if it.done {
  1003  		select {
  1004  		case log := <-it.logs:
  1005  			it.Event = new(BlacklistRegistryV1WhitelistProposal)
  1006  			if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1007  				it.fail = err
  1008  				return false
  1009  			}
  1010  			it.Event.Raw = log
  1011  			return true
  1012  
  1013  		default:
  1014  			return false
  1015  		}
  1016  	}
  1017  	// Iterator still in progress, wait for either a data or an error event
  1018  	select {
  1019  	case log := <-it.logs:
  1020  		it.Event = new(BlacklistRegistryV1WhitelistProposal)
  1021  		if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil {
  1022  			it.fail = err
  1023  			return false
  1024  		}
  1025  		it.Event.Raw = log
  1026  		return true
  1027  
  1028  	case err := <-it.sub.Err():
  1029  		it.done = true
  1030  		it.fail = err
  1031  		return it.Next()
  1032  	}
  1033  }
  1034  
  1035  // Error returns any retrieval or parsing error occurred during filtering.
  1036  func (it *BlacklistRegistryV1WhitelistProposalIterator) Error() error {
  1037  	return it.fail
  1038  }
  1039  
  1040  // Close terminates the iteration process, releasing any pending underlying
  1041  // resources.
  1042  func (it *BlacklistRegistryV1WhitelistProposalIterator) Close() error {
  1043  	it.sub.Unsubscribe()
  1044  	return nil
  1045  }
  1046  
  1047  // BlacklistRegistryV1WhitelistProposal represents a WhitelistProposal event raised by the BlacklistRegistryV1 contract.
  1048  type BlacklistRegistryV1WhitelistProposal struct {
  1049  	Target   common.Address
  1050  	Proposal common.Address
  1051  	Raw      types.Log // Blockchain specific contextual infos
  1052  }
  1053  
  1054  // FilterWhitelistProposal is a free log retrieval operation binding the contract event 0x2e46fe8e502a44b05a85d4346d3e208fc845c81a81c9b7e4db08a33dca59faff.
  1055  //
  1056  // Solidity: event WhitelistProposal(address indexed target, address proposal)
  1057  func (_BlacklistRegistryV1 *BlacklistRegistryV1Filterer) FilterWhitelistProposal(opts *bind.FilterOpts, target []common.Address) (*BlacklistRegistryV1WhitelistProposalIterator, error) {
  1058  
  1059  	var targetRule []interface{}
  1060  	for _, targetItem := range target {
  1061  		targetRule = append(targetRule, targetItem)
  1062  	}
  1063  
  1064  	logs, sub, err := _BlacklistRegistryV1.contract.FilterLogs(opts, "WhitelistProposal", targetRule)
  1065  	if err != nil {
  1066  		return nil, err
  1067  	}
  1068  	return &BlacklistRegistryV1WhitelistProposalIterator{contract: _BlacklistRegistryV1.contract, event: "WhitelistProposal", logs: logs, sub: sub}, nil
  1069  }
  1070  
  1071  // WatchWhitelistProposal is a free log subscription operation binding the contract event 0x2e46fe8e502a44b05a85d4346d3e208fc845c81a81c9b7e4db08a33dca59faff.
  1072  //
  1073  // Solidity: event WhitelistProposal(address indexed target, address proposal)
  1074  func (_BlacklistRegistryV1 *BlacklistRegistryV1Filterer) WatchWhitelistProposal(opts *bind.WatchOpts, sink chan<- *BlacklistRegistryV1WhitelistProposal, target []common.Address) (event.Subscription, error) {
  1075  
  1076  	var targetRule []interface{}
  1077  	for _, targetItem := range target {
  1078  		targetRule = append(targetRule, targetItem)
  1079  	}
  1080  
  1081  	logs, sub, err := _BlacklistRegistryV1.contract.WatchLogs(opts, "WhitelistProposal", targetRule)
  1082  	if err != nil {
  1083  		return nil, err
  1084  	}
  1085  	return event.NewSubscription(func(quit <-chan struct{}) error {
  1086  		defer sub.Unsubscribe()
  1087  		for {
  1088  			select {
  1089  			case log := <-logs:
  1090  				// New log arrived, parse the event and forward to the user
  1091  				event := new(BlacklistRegistryV1WhitelistProposal)
  1092  				if err := _BlacklistRegistryV1.contract.UnpackLog(event, "WhitelistProposal", log); err != nil {
  1093  					return err
  1094  				}
  1095  				event.Raw = log
  1096  
  1097  				select {
  1098  				case sink <- event:
  1099  				case err := <-sub.Err():
  1100  					return err
  1101  				case <-quit:
  1102  					return nil
  1103  				}
  1104  			case err := <-sub.Err():
  1105  				return err
  1106  			case <-quit:
  1107  				return nil
  1108  			}
  1109  		}
  1110  	}), nil
  1111  }